複雑なJSONを迅速に解析する方法は?
-
20-12-2019 - |
質問
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 から返されたデータ。
{
"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"])
}
これにより、次のように出力されます。
北京
英国
日本
发过
中国
所属していません StackOverflow