我已经完成了一个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/