如何将 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
处理程序。
我正在尝试将 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
处理程序。