我有一个API端点,它以下列格式返回JSON:
[
{
"id": "1",
"name": "John"
},
{
"id": "2",
"name": "Jane"
},
{
"id": "3",
"name": "Nick"
}
]
我试图在Swift 3中解析它,但我只能找到解析JSON格式的例子:
{
"blogs": [
{
"needspassword": true,
"id": 73,
"url": "http://remote.bloxus.com/",
"name": "Bloxus test"
},
{
"needspassword": false,
"id": 74,
"url": "http://flickrtest1.userland.com/",
"name": "Manila Test"
}
],
"stat": "ok"
}
,其水平高于我的水平。
所以,我看到的例子只是解析他们的数据,如jsonResponse["blogs"]
,我不能这样做,因为我的格式不同。
如何解析我所获得的格式,或者如何返回更易于解析的格式?
任何建议表示赞赏,谢谢!
答案 0 :(得分:2)
您可以执行以下操作:
let data = // Data received from WS
do {
let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions()) as? [[String : String]]
//json is now an array from dictionary matching your model
}
catch {
//handle error
}
答案 1 :(得分:1)
这将在放入网络电话时解析它。
do {
let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as! [[String : AnyObject]]
let firstPerson = json[0]
print(firstPerson)
let id = firstPerson["id"] as! String
print(id)
let name = firstPerson["name"] as! String
print(name)
} catch {
//handle error
}
另外,我倾向于反对为第三方库提供建议,但SwiftyJSON是我做的一个例外。如果您想尝试,请将其添加到您的pod文件中:
pod SwiftyJSON','3.0.0'
文档:https://github.com/SwiftyJSON/SwiftyJSON
编辑 - 回答评论:
更换行:
if let id = firstPerson["id"] as? String {
print(id)
}
替换行(如果您需要保持该值):
var thisId: String?
if let id = firstPerson["id"] as? String {
thisId = id
}
print(thisId ?? "")
答案 2 :(得分:-3)
我真的不知道swift但是可能有相当于ajax json编码(服务器端你json_encode你的数组和客户端你json_decode响应)
我们的想法是使用相同的格式化程序来编码和解码数据