Swift Come analizzare JSON complesso?
-
20-12-2019 - |
Domanda
Ecco il mio metodo per analizzare 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 restituito dati.
{
"tit":"服务器",
"loc":[
{
"_name":"北京",
"evn":"funckEvent:"
},{
"_name":"英国",
"evn":"funckEvent:"
},{
"_name":"日本",
"evn":"funckEvent:"
},{
"_name":"发过",
"evn":"funckEvent:"
},{
"_name":"中国",
"evn":"funckEvent:"
}
]
}
.
Come loop json array?
Vorrei andare in bicicletta per stampare il contenuto delle parentesi{"_name":"中国","evn":"funckEvent:"}
var loc = apiJson.objectForKey("loc")
Soluzione
Quel codice funziona perfettamente bene per me (eseguendo un server localhost
che serve quell'estrazione JSON a 'JSON.HTML');Tuttavia, non è riuscito a stampare fino a quando non ho specificato la porta specifica (nel mio caso, NSURL(string: "http://127.0.0.1:8000/json.html")
).Hai provato esplicitamente specificando la porta?
Inoltre, potrebbe essere illuminato per catturare effettivamente l'errore restituito da dataWithContentsofURL
dichiarando una variabile NSerror e passandola, come:
var error: NSError?
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: &error)
.
Per loop su un elemento qui, dovrai gettarlo come array:
var loc = apiJson.objectForKey("loc") as [AnyObject]
for i in loc {
println(i["_name"])
}
.
Questa stampa:
北京
英国
日本
发过
中国
.