我从一个API调用接收到以下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!)它会给我正确的值,但是当我输入时,会抛出这个错误。
这里可能有什么问题?

最佳答案

您需要将remove_list视为一个数组,告诉SwiftyJSON这样做。你的代码应该是

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

关于json - SwiftyJSON-无法解析Json,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45280757/

10-13 09:21
查看更多