rápido como analisar json complexo?
-
20-12-2019 - |
Pergunta
Aqui está meu método para analisar JSON
var apiUrl = NSURL(string: "http://127.0.0.1/api.php")
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: nil)
var apiJson = NSJSONSerialization.JSONObjectWithData(apiData, options: NSJSONReadingOptions.AllowFragments, error: nil)
http://127.0.0.1/api.php
url retornou dados.
{
"tit":"服务器",
"loc":[
{
"_name":"北京",
"evn":"funckEvent:"
},{
"_name":"英国",
"evn":"funckEvent:"
},{
"_name":"日本",
"evn":"funckEvent:"
},{
"_name":"发过",
"evn":"funckEvent:"
},{
"_name":"中国",
"evn":"funckEvent:"
}
]
}
Como fazer um loop de matrizes json?Eu gostaria de pedalar para imprimir o conteúdo dos colchetes{"_name":"中国","evn":"funckEvent:"}
var loc = apiJson.objectForKey("loc")
Solução
Esse código funciona perfeitamente bem para mim (executando um localhost
servidor servindo exatamente esse JSON em 'json.html');no entanto, não foi possível imprimir até que eu especificasse a porta específica (no meu caso, NSURL(string: "http://127.0.0.1:8000/json.html")
).Você tentou especificar explicitamente a porta?
Além disso, pode ser esclarecedor capturar o erro retornado por dataWithContentsofURL
declarando uma variável NSError e passando-a, assim:
var error: NSError?
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: &error)
Para fazer um loop sobre um elemento aqui, você precisará convertê-lo como um array:
var loc = apiJson.objectForKey("loc") as [AnyObject]
for i in loc {
println(i["_name"])
}
Isso imprimirá:
北京
英国
日本
发过
中国