在iOS里面解析json数据某种程度上并没有Android上面使用JOSN方便。但第三方开源框架诸如SwiftyJSON的到来,尤其是配合Swift5等以上版本,对应用程序而言数据安全性方面有很大的提升。
https://github.com/SwiftyJSON/SwiftyJSON
首先先模拟一下JSON数据的获取,这里直接定义。
然后把json数据转换成Data。
接着就使用SwiftyJSON直接把数据解析。需要说明的是,如果没有把解析放在if
里面那么解析的数据就是Optional类型。
这里由于定义的是两层json,故for
循环里面直接调用解析后的数据[数据下标索引][键].string
来获取每个值对。
func paserJSON(){
// Create test json data.
var data = "[{\"id\":\"2012001\",\"name\":\"FlyToy\",\"price\":\"100\"},{\"id\":\"2012002\",\"name\":\"FlyBoat\",\"price\":\"200\"},{\"id\":\"2012003\",\"name\":\"MiniBoat\",\"price\":\"300\"},{\"id\":\"2012004\",\"name\":\"House\",\"price\":\"400\"},{\"id\":\"2012005\",\"name\":\"test1\",\"price\":\"500\"},{\"id\":\"2012006\",\"name\":\"test2\",\"price\":\"600\"}]"
// Transfer json into data.
let jsonData = data.data(using: .utf8)
// Paser json data with SwiftyJSON by JSON().
let transferData = JSON(jsonData)
// Get data directly.
var name = transferData[1]["name"].string
print("------> FUNC: \(name!)")
// Loop data.
for i in 0..<6 {
print("------> \(transferData[i]["id"].string!)")
print("------> \(transferData[i]["name"].string!)")
print("------> \(transferData[i]["price"].string!)")
print("\n")
}
}