如何将 json 中的姓名保存到 swift 中的列表

How to save names from json to list in swift

我正在尝试将 json url 中的所有名称保存到列表中,但它不起作用。

我正在使用此代码:

let jsonUrl = ("https://de1.api.radio-browser.info/json/stations/byname/jazz")
Alamofire.request( jsonUrl).responseJSON { (responseData) -> Void in
    if((responseData.result.value) != nil) {
        
        let swiftyJsonVar = JSON(responseData.result.value!)
        
        for (_, subJson):(String, JSON) in swiftyJsonVar {
            
            for (_, subJson):(String, JSON) in subJson {
                
                let nameList = subJson["name"].stringValue
                print(nameList)
            }
        }
    }
}

我该如何解决?

使用 Codable 结构使此类任务变得容易得多。

考虑一下:

//Create a struct that contains the values you are interested in
struct NameResponse: Codable{
    var name: String
}

let jsonUrl = ("https://de1.api.radio-browser.info/json/stations/byname/jazz")

    Alamofire.request( jsonUrl).responseData { (responseData) -> Void in
        if((responseData.result.value) != nil) {
            //Now decode the response data to an array of your structs
            let names = try! JSONDecoder().decode([NameResponse].self, from: responseData.result.value!)
            //Now you can map them to an array or process them anyway you want
            let nameArray = names.map{[=10=].name}
            print(nameArray)
        }
}

编辑:

如果您需要来自 Alamofire 响应的数据,您需要调用 .responseData 处理程序而不是 .responseJSON 处理程序。