2015-11-06 131 views
0

當我嘗試從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的代碼? –

回答

0

你可以簡單地通過在模型類中重寫初始化函數避免JSON空字段。 當然取決於你的映射數據。如果你會得到JSON空的對象,這個構造函數將簡單地替換空到默認值

例如:

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

關於我們的代碼。你在哪裏取得了JSON中的0鍵?這只是json["data.name"]json["data.price"]

+0

是的,我初始化模型類的默認值。我可能會將[0]放在錯誤的地方,因爲我猜想我從Web服務獲得的json是字典數組,並且我不擅長它。 – mehmeet43