用swiftyJson swift 3解析json
Posted
技术标签:
【中文标题】用swiftyJson swift 3解析json【英文标题】:parsing json with swiftyJson swift 3 【发布时间】: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有问题吗?怎样才能正确使用?
【问题讨论】:
【参考方案1】:查看 JSON 对象中每个级别的 cmets
[-----------------------------------------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"]
【讨论】:
【参考方案2】:对于其他想要通过 Json[array] 的人...在我的情况下,我编写了以下代码:
for item in destinationJson["data"]["destinos"].arrayValue
print(item["idDestino"].stringValue)
【讨论】:
以上是关于用swiftyJson swift 3解析json的主要内容,如果未能解决你的问题,请参考以下文章
使用 swiftyjson 和 swift 解析嵌入的 json
swift、Alamofire、SwiftyJSON:如何解析 arrayObject
IOS/Swift/JSON:使用 swiftyJSON 解析嵌套的 JSON
Swift 使用 Alamofire 和 SwiftyJSON 解析 Json [关闭]