【发布时间】:2017-07-11 21:32:25
【问题描述】:
虚拟问题: 我有我的 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?域:“SwiftyJSONErrorDomain” - 代码:901 0x000060000005c080 此错误的意思是:无法合并,因为顶级 JSON 的类型不同
同样适用于: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 swift swift3 swifty-json