0

ここに画像の説明を入力 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.phpurl はデータを返しました。

{
    "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")

4

1 に答える 1

1

そのコードは私にとっては完全にうまく機能します(localhost「json.html」で正確なJSONを提供するサーバーを実行しています)。ただし、特定のポート (私の場合は ) を指定するまで印刷できませんでした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"])
}

これは印刷されます:

北京
英国
日本
发过
中国
于 2014-07-29T03:29:54.227 に答える