我从一个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/