Pergunta

enter image description hereAqui 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")

Foi útil?

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á:

北京
英国
日本
发过
中国
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top