質問

enter image description hereJSONを解析するための私の方法は次のとおりです

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 から返されたデータ。

{
    "tit":"服务器",
    "loc":[
        {
            "_name":"北京",
            "evn":"funckEvent:"
        },{
            "_name":"英国",
            "evn":"funckEvent:"
        },{
            "_name":"日本",
            "evn":"funckEvent:"
        },{
            "_name":"发过",
            "evn":"funckEvent:"
        },{
            "_name":"中国",
            "evn":"funckEvent:"
        }
    ]
}

json配列をループするにはどうすればよいですか?括弧の内容を循環して出力したいと考えています{"_name":"中国","evn":"funckEvent:"}

var loc = apiJson.objectForKey("loc")

役に立ちましたか?

解決

そのコードは私にとっては完全にうまく機能します( localhost サーバーはその正確な JSON を「json.html」で提供します)。ただし、特定のポートを指定するまで印刷できませんでした(私の場合、 NSURL(string: "http://127.0.0.1:8000/json.html"))。明示的にポートを指定してみましたか?

さらに、によって返されるエラーを実際に捕捉することは有益かもしれません。 dataWithContentsofURL 次のように NSError 変数を宣言して渡します。

var error: NSError?
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: &error)

ここで要素をループするには、要素を配列としてキャストする必要があります。

var loc = apiJson.objectForKey("loc") as [AnyObject]
for i in loc {
    println(i["_name"])
}

これにより、次のように出力されます。

北京
英国
日本
发过
中国
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top