我已经完成了一个Web服务来检索数据的JSON,如下所示:

(这存储在变量数据中)

{"0":{"categoryId":"1","category":"Restaurants"},"1":{"categoryId":"2","category":"Attractions"},"type":"1006","status":"OK"}

但是我无法成功检索每个对象,因为我想将它们动态存储到数组中,例如
var categoryIDArray = ["1", "2"];
var categoryArray   = ["Restaurants", "Attractions"];

因此,我最初想做以下逻辑,因为我在android studio中为Java和Cordova为javascript做过类似的事情
//try
//{
//    for(var i = 0; i < data.count(); i++)
//    {
//        categoryIDArray[i] = data[i].categoryId;
//        categoryArray[i]   = data[i].category;
//    }
//}
//catch(Exception ex)
//{
//    //Catch null pointer or wrong format for json
//}

但是我已经陷入了在Swift 2中检索JSON数量的问题。
//I tried doing the following to see if I am able to retrieve data 0 JSON but it failed
//print(data![0]);

以下代码有效,但是它只能提取单个数据
do{
    let json: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
    let test1 = (json!["status"] as? String)!
    let test2 = (json!["0"] as? String)!

    print(test1) //shows "OK"
    print(test2) //shows nil instead of {"categoryId":"1","category":"Restaurants"}

} catch {
    print("JSON parse error")
}

有小费吗?谢谢!

最佳答案

我们来看一下以下语句:

let test1 = (json!["status"] as? Int)!

json!意思是:将对象json拆开,如果它为nil,则崩溃。

json![“status”]的意思是:尝试使用“status”作为对象json中的索引。如果json不是字典,则会崩溃。

json![“status”]如? Int的意思是:获取json![“status”]的结果,并尝试将其转换为Int,如果失败则产生nil。

(json![“status”] as?Int)!意思是:从上一行取可选的int,解开它,如果它为nil则崩溃。

在一行代码中大约有四个崩溃。

关于arrays - 使用循环将多个json对象存储到数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42005837/

10-11 19:57
查看更多