¿Cómo analizar rápidamente json complejo?
-
20-12-2019 - |
Pregunta
Aquí está mi método para analizar 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 devolvió datos.
{
"tit":"服务器",
"loc":[
{
"_name":"北京",
"evn":"funckEvent:"
},{
"_name":"英国",
"evn":"funckEvent:"
},{
"_name":"日本",
"evn":"funckEvent:"
},{
"_name":"发过",
"evn":"funckEvent:"
},{
"_name":"中国",
"evn":"funckEvent:"
}
]
}
¿Cómo bucle de matrices json?Me gustaría realizar un ciclo para imprimir el contenido de los corchetes.{"_name":"中国","evn":"funckEvent:"}
var loc = apiJson.objectForKey("loc")
Solución
Ese código funciona perfectamente bien para mí (ejecutando un localhost
servidor que sirve ese JSON exacto en 'json.html');sin embargo, no pudo imprimir hasta que especifiqué el puerto específico (en mi caso, NSURL(string: "http://127.0.0.1:8000/json.html")
).¿Has intentado especificar explícitamente el puerto?
Además, puede resultar esclarecedor detectar el error devuelto por dataWithContentsofURL
declarando una variable NSError y pasándola, así:
var error: NSError?
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: &error)
Para recorrer un elemento aquí, deberá convertirlo como una matriz:
var loc = apiJson.objectForKey("loc") as [AnyObject]
for i in loc {
println(i["_name"])
}
Esto imprimirá:
北京
英国
日本
发过
中国