无法通过可编码swift从json获取数据
这是json代码:无法通过可编码swift从json获取数据,json,swift,codable,Json,Swift,Codable,这是json代码: { "status":"success", "data": [ {"id":"3", "city_name":"Delhi", "city_image":"delhi.png"}, {"id":"4", "city_name":"Mumbai", "city_image":"tickmark.png"} ] } 我的Swift代码: struct c
{
"status":"success",
"data":
[
{"id":"3",
"city_name":"Delhi",
"city_image":"delhi.png"},
{"id":"4",
"city_name":"Mumbai",
"city_image":"tickmark.png"}
]
}
我的Swift代码:
struct city: Decodable{
let status : String
let id: String
let data : String
let city_name: String
let city_image: String
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let jsonUrl = "http://parking.onlinekiduniya.org/api/cityList.php"
let url = URL(string: jsonUrl)
URLSession.shared.dataTask(with: url!) {(data, response, error) in
do {
let cities = try JSONDecoder().decode([city].self, from: data!)
for city in cities {
print(city.id)
}
}
catch {
print("we got error")
}
}.resume()
}
}
替换
let cities = try JSONDecoder().decode([city].self, from: data!)
与
您的根目录是一个字典而不是数组好的,谢谢您的快速响应。我替换了这一行代码,但现在出现了错误-----在其自身初始值内使用的变量value@VidurBahl按照整个答案内容确定打印数据的打印行是什么。?非常感谢@sh_khanThanks,兄弟,你救了我一天:)非常感谢你快速准确的回复。另外,哪种方法是学习swift中json集成的好方法?谢谢你again@VidurBahl首先,您应该学习如何使用正确构造json,然后使用生成swift文件
let root = try JSONDecoder().decode(Root.self, from: data!)
let cities = root.data
cities.forEach {
print($0.id)
}
struct Root: Codable {
let status: String
let data: [City]
}
struct City: Codable {
let id, cityName, cityImage: String // you can use snake case also
enum CodingKeys: String, CodingKey {
case id
case cityName = "city_name"
case cityImage = "city_image"
}
}