用 swiftyJson swift 解析 json 3
parsing json with swiftyJson swift 3
虚拟问题:
我有我的 json:
let jsonDestination = "[{\"data\": {\"destinos\": [{\"idDestino\": \"1\",\"desDestino\": \"ASUNCION\"},{\"idDestino\": \"2\",\"desDestino\": \"MIAMI\"}]}}]"
如果 "idDestino" 像这样打印结果:
if let dataFromString = jsonDestination.data(using: .utf8, allowLossyConversion: false) {
let destinationJson = JSON(data: dataFromString)
for item in destinationJson["destinos"].arrayValue {
print(item["idDestino"].stringValue)
}
}
但是,永远不要输入执行行 print(item["idDestino"].stringValue)
我也试试这个:
let firtsDestinationId = destinationJson[0]["data"]["destinos"]["idDestino"]
print(firtsDestinationId)
并得到这个错误:
_error NSError? domain: "SwiftyJSONErrorDomain" - code: 901 0x000060000005c080
This error is means: Couldn't merge, because the JSONs differ in type on top level
同样适用于:let firtsDestinationId = destinationJson["data"][0]["destinos"]["idDestino"]
所以..我真正的问题是我不知道如何获取我的 json 的数据...可以帮我吗?
PD.:这个例子工作得很好:
let jsonDestination = "{ \"people\": [{ \"firstName\": \"Paul\", \"lastName\": \"Hudson\", \"isAlive\": true }, { \"firstName\": \"Angela\", \"lastName\": \"Merkel\", \"isAlive\": true }, { \"firstName\": \"George\", \"lastName\": \"Washington\", \"isAlive\": false } ] }"
if let dataFromString = jsonDestination.data(using: String.Encoding.utf8) {
let destinationJson = JSON(data: dataFromString)
for item in destinationJson["people"].arrayValue {
print(item["firstName"].stringValue)
}
}
我的json是什么问题?怎样才能正确使用?
在你的 JSON 对象中查看我对每个级别的评论
[-----------------------------------------Array
{--------------------------------------Obj
"data":{----------------------------Obj
"destinos":[---------------------Array
{-----------------------------Obj
"idDestino":"1",
"desDestino":"ASUNCION"
},
{
"idDestino":"2",
"desDestino":"MIAMI"
}
]
}
}
]
下面的代码不起作用,因为 destinos 的 JSON 元素是一个数组。
let firtsDestinationId = destinationJson[0]["data"]["destinos"]["idDestino"]
你不能尝试下面的代码
let firtsDestinationId = destinationJson[0]["data"]["destinos"][0]["idDestino"]
对于想要遍历 Json[数组] 的其他人...在我的例子中,我写了这段代码:
for item in destinationJson["data"]["destinos"].arrayValue {
print(item["idDestino"].stringValue)
}
虚拟问题: 我有我的 json:
let jsonDestination = "[{\"data\": {\"destinos\": [{\"idDestino\": \"1\",\"desDestino\": \"ASUNCION\"},{\"idDestino\": \"2\",\"desDestino\": \"MIAMI\"}]}}]"
如果 "idDestino" 像这样打印结果:
if let dataFromString = jsonDestination.data(using: .utf8, allowLossyConversion: false) {
let destinationJson = JSON(data: dataFromString)
for item in destinationJson["destinos"].arrayValue {
print(item["idDestino"].stringValue)
}
}
但是,永远不要输入执行行 print(item["idDestino"].stringValue)
我也试试这个:
let firtsDestinationId = destinationJson[0]["data"]["destinos"]["idDestino"]
print(firtsDestinationId)
并得到这个错误:
_error NSError? domain: "SwiftyJSONErrorDomain" - code: 901 0x000060000005c080 This error is means: Couldn't merge, because the JSONs differ in type on top level
同样适用于:let firtsDestinationId = destinationJson["data"][0]["destinos"]["idDestino"]
所以..我真正的问题是我不知道如何获取我的 json 的数据...可以帮我吗?
PD.:这个例子工作得很好:
let jsonDestination = "{ \"people\": [{ \"firstName\": \"Paul\", \"lastName\": \"Hudson\", \"isAlive\": true }, { \"firstName\": \"Angela\", \"lastName\": \"Merkel\", \"isAlive\": true }, { \"firstName\": \"George\", \"lastName\": \"Washington\", \"isAlive\": false } ] }"
if let dataFromString = jsonDestination.data(using: String.Encoding.utf8) {
let destinationJson = JSON(data: dataFromString)
for item in destinationJson["people"].arrayValue {
print(item["firstName"].stringValue)
}
}
我的json是什么问题?怎样才能正确使用?
在你的 JSON 对象中查看我对每个级别的评论
[-----------------------------------------Array
{--------------------------------------Obj
"data":{----------------------------Obj
"destinos":[---------------------Array
{-----------------------------Obj
"idDestino":"1",
"desDestino":"ASUNCION"
},
{
"idDestino":"2",
"desDestino":"MIAMI"
}
]
}
}
]
下面的代码不起作用,因为 destinos 的 JSON 元素是一个数组。
let firtsDestinationId = destinationJson[0]["data"]["destinos"]["idDestino"]
你不能尝试下面的代码
let firtsDestinationId = destinationJson[0]["data"]["destinos"][0]["idDestino"]
对于想要遍历 Json[数组] 的其他人...在我的例子中,我写了这段代码:
for item in destinationJson["data"]["destinos"].arrayValue {
print(item["idDestino"].stringValue)
}