Domanda

Inserisci la descrizione dell'immagine qui 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")

È stato utile?

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:

北京
英国
日本
发过
中国
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top