我得到了这个JSON对象,我从服务器发送到Swift应用程序。
{
"625289": {
"id": 1,
"subject": "Hello World"
},
"625277": {
"id": 2,
"subject":"Bye World!"
}
}
所以我尝试通过在Swift课程中执行以下操作来获得每个结果(“625289”和“625277”)的主题:
struct Resultat : Decodable {
let subject: String
}
var result = [Resultat]()
let urlll = URL(string:"http://localhost:8888/api/pouet.php")
URLSession.shared.dataTask(with: urlll!) { (data, response, error) in
do {
print("coucoulol")
//print(response)
self.result = try JSONDecoder().decode([Resultat].self, from: data!)
print(self.result)
for eachTicket in self.result {
print(eachTicket.subject)
}
} catch {
print("error"+error.localizedDescription)
}
}.resume()
但是,当我尝试执行代码时,它说“数据无法读取,因为它的格式不正确”。根据我的理解,代码中的循环足以获取数组中的值,或者我错了。感谢任何帮助。谢谢。
答案 0 :(得分:3)
根对象是字典。您可以将对象解码为[String:Resultat]
。该词典还包含词典。不涉及数组。
struct Resultat : Decodable {
let subject: String
let id : Int
}
...
let result = try JSONDecoder().decode([String:Resultat].self, from: data!)
for (key, value) in result {
print(key, value.subject)
}
答案 1 :(得分:1)
您可以尝试使用下面的 SwiftyJSON
$ 0.0 =密钥
$ 0.1 =价值
let data = JSON(result)
data.dictionaryValue.forEach({
print($0.1)
})