2017-07-24 99 views
0

我從API調用接收到以下JSON。SwiftyJSON - 無法解析Json

{ 
    "status" : "success", 
    "promotion" : { 
    "insert_list" : [ 

    ], 
    "remove_list" : [ 
     { 
     "id" : "9" 
     } 
    ] 
    }, 
    "message" : "Synchronized Successfully." 
} 

我想通過提取個人ID來處理remove_list,這裏是SWIFT代碼,我使用。

Alamofire.request(requestURL, method: .post, parameters: parameters).responseJSON { response in 
    switch response.result { 
    case .success(let value): 
     let response = JSON(value) 
     print(response) 
     if "success" == response["status"] { 
      // Format Promotion Ids To Remove From List 
      var promotionIdsToRemove:[Int32] = [] 
      for (_,promotionJson):(String, JSON) in response["promotion"]["remove_list"] { 
       promotionIdsToRemove.append(promotionJson["id"].int32!) 
      } 
     } 
    case .failure(let error): 
     print(error) 
    } 
} 

這是扔我一個錯誤說,fatal error: unexpectedly found nil while unwrapping an Optional value朝下面的代碼promotionIdsToRemove.append(promotionJson["id"].int32!)

指着如果我只打印了promotionJson["id"]它給了我正確的值,但是當我類型轉換它,拋出我這個錯誤。

這裏有什麼問題?

+0

您是否嘗試打印promotionJson [「id」]? –

+0

是的!並打印值9,問題是在進行類型轉換時。 –

+0

但它是一個字符串,你確定swifty可以改變任何你想強制解開的int32嗎? –

回答

0

謝謝@DávidPásztor,下面的代碼似乎有伎倆。

var promotionIdsToRemove:[Int32] = [] 
for (_,promotionJson):(String, JSON) in response["promotion"]["remove_list"] { 
    promotionIdsToRemove.append(Int32(promotionJson["id"].string!)!) 
} 
0

response["promotion"]["remove_list"]應該是數組,而不是字典。

更改您的代碼

 for promotionJson in response["promotion"]["remove_list"] { 
      promotionIdsToRemove.append(promotionJson["id"].int32!) 
     } 
+0

這不起作用。它給了我錯誤'「類型JSON._Element(aka(String,JSON))沒有下標成員。」' –

1

你需要告訴SwiftyJSON這樣做治療remove_list作爲一個數組。你的代碼應該是

for removeJSON in response["promotion"]["remove_list"].arrayValue { 
    // removeJSON is of type JSON here 
    promotionIdsToRemove.append(removeJSON["id"].intValue) 
} 

這將環比remove_list陣列和所有的ID追加到promotionIdsToRemove。如果某件商品沒有ID字段,則.intValue將確保您獲得該ID的正確值或0

+0

讓我試試這個。 –

+0

這仍然給我錯誤。我發佈的解決方案似乎是唯一正在工作的解決方案。這很奇怪。 –

+0

這非常奇怪......我已經和SwiftyJSON合作過很多次,但從來沒有見過類似你所遇到的事情。你確定你複製了我的整個循環嗎? – donnywals