سريع كيفية تحليل 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