【发布时间】:2018-04-18 05:11:35
【问题描述】:
我正在尝试从 url 获取 json。虽然序列化 json 它给出了错误?
static func fetchFeatureApp(){
let urlString="http://ebmacs.net/ubereats/Api/all_product?id=1"
let url = URL(string: urlString)!
URLSession.shared.dataTask(with: URLRequest(url: url)){ (data, responce, error) in
if error != nil
{
print(error)
return
}
do{
let json=try (JSONSerialization.jsonObject(with: data!, options: .mutableContainers)) //as! [String:AnyObject]?//as! [AnyObject]?//as! String? //as! [String:AnyObject]//as! [String: Any]
//////////Error here
//let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String: Any] //program is crashing
var appCategories=[AppCategory]()
for dict in json["products"] as! [[String :AnyObject]]{///////Error Here
let appCategory = AppCategory()
appCategory.setValuesForKeys(dict)
appCategories.append(appCategory)
}
print(appCategories)
}catch let err{
print(error)
}
}.resume()
}
Json 的类是
class App:NSObject {
var product_id:NSNumber?
var product_name:String?
var product_description:String?
var image_url:String?
var product_price:NSNumber?
var name:String?
}
在以下几行我收到错误:
错误 1:
`let json=try (JSONSerialization.jsonObject(with: data!, options: .mutableContainers)) //as! [String:AnyObject]?//as! [AnyObject]?//as! String? //as! [String:AnyObject]//as! [String: Any]`
不能从 'Any' 向下转换为更可选的类型 '[String : 任何对象]?'
错误 2:
for dict in json["products"] as! [[String :AnyObject]]{ /////////////error
类型 'Any' 没有下标成员
如何消除这些错误?
【问题讨论】:
-
请检查您希望获得的 JSON 的根对象。
标签: ios json swift api serialization