سؤال

enter image description hereهذه هي طريقتي لتحليل 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"])
}

سيؤدي هذا إلى طباعة:

北京
英国
日本
发过
中国
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top