SwiftyJSON - 无法解析 Json
SwiftyJSON - Unable to Parse Json
我从 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!)
如果我只打印 promotionJson["id"]
它会给我正确的值,但是当我对它进行类型转换时,会抛出这个错误。
这可能是什么问题?
response["promotion"]["remove_list"]
应该是数组,而不是字典。
将您的代码更改为
for promotionJson in response["promotion"]["remove_list"] {
promotionIdsToRemove.append(promotionJson["id"].int32!)
}
您需要通过告诉 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
将确保您获得正确的值或 0
作为 id。
谢谢@DávidPásztor,下面的代码似乎可以解决问题。
var promotionIdsToRemove:[Int32] = []
for (_,promotionJson):(String, JSON) in response["promotion"]["remove_list"] {
promotionIdsToRemove.append(Int32(promotionJson["id"].string!)!)
}
我从 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!)
如果我只打印 promotionJson["id"]
它会给我正确的值,但是当我对它进行类型转换时,会抛出这个错误。
这可能是什么问题?
response["promotion"]["remove_list"]
应该是数组,而不是字典。
将您的代码更改为
for promotionJson in response["promotion"]["remove_list"] {
promotionIdsToRemove.append(promotionJson["id"].int32!)
}
您需要通过告诉 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
将确保您获得正确的值或 0
作为 id。
谢谢@DávidPásztor,下面的代码似乎可以解决问题。
var promotionIdsToRemove:[Int32] = []
for (_,promotionJson):(String, JSON) in response["promotion"]["remove_list"] {
promotionIdsToRemove.append(Int32(promotionJson["id"].string!)!)
}