当用swiftyJSON解析Swift 2.0中的JSON时获取空值

问题描述:

当我尝试从url解析json时,我得到一个空值。我错过了什么,或者应该是我正在实现简单地加载一个json值并放入一个UICollectionView当用swiftyJSON解析Swift 2.0中的JSON时获取空值

这是我从Web服务中获得的json。我有一个验证工具,验证它,它是正确的:

{ 
    "status": 1, 
    "count": 72, 
    "data": [ 
     { 
      "id": 818, 
      "name": "1. product", 
      "price": "155.00" 
     }, 
     { 
      "id": 812, 
      "name": "2. product", 
      "price": "62.00" 
     }, 
     { 
      "id": 26, 
      "name": "3. product", 
      "price": "213.00" 
     }, 
     { 
      "id": 657, 
      "name": "4. product", 
      "price": "21.00" 
     }, 
     { 
      "id": 347, 
      "name": "5. product", 
      "price": "57.00" 
     } 

我需要从上面的JSON获取名称和价格值。

这是在viewDidLoad中调用的swiftyJSON代码块。我怀疑问题在这里,但我不确定。

let json = JSON(data: products) 
if let productName = json["data"][0]["name"].string { 
    print("Product: \(productName)") 
} 
+0

你的代码打印什么?你能更多地展示你获得'产品'的位置吗?如果你打印'products'或'json [“data”]'会发生什么? –

+0

它不打印任何东西,因为以print(“Product ...”开头的代码从未调用过。 – mehmeet43

+0

您的示例中的“products”是什么类型?您可以展示更多关于如何从网络获取json的代码? –

你可以简单地通过在模型类中重写初始化函数避免JSON空字段。 当然取决于你的映射数据。如果你会得到JSON空的对象,这个构造函数将简单地替换空到默认值

例如:

override init() { 
    mapField1 = "" // string value 
    mapField2 = 0 // number value 
} 

关于我们的代码。你在哪里取得了JSON中的0键?这只是json["data.name"]json["data.price"]

+0

是的,我初始化模型类的默认值。我可能会将[0]放在错误的地方,因为我猜想我从Web服务获得的json是字典数组,并且我不擅长它。 – mehmeet43