SwiftyJSON - 无法解析Json
我从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"]
它给了我正确的值,但是当我类型转换它,抛出我这个错误。
这里有什么问题?
谢谢@DávidPásztor,下面的代码似乎有伎俩。
var promotionIdsToRemove:[Int32] = []
for (_,promotionJson):(String, JSON) in response["promotion"]["remove_list"] {
promotionIdsToRemove.append(Int32(promotionJson["id"].string!)!)
}
response["promotion"]["remove_list"]
应该是数组,而不是字典。
更改您的代码
for promotionJson in response["promotion"]["remove_list"] {
promotionIdsToRemove.append(promotionJson["id"].int32!)
}
这不起作用。它给了我错误'“类型JSON._Element(aka(String,JSON))没有下标成员。”' –
你需要告诉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
。
让我试试这个。 –
这仍然给我错误。我发布的解决方案似乎是唯一正在工作的解决方案。这很奇怪。 –
这非常奇怪......我已经和SwiftyJSON合作过很多次,但从来没有见过类似你所遇到的事情。你确定你复制了我的整个循环吗? – donnywals
您是否尝试打印promotionJson [“id”]? –
是的!并打印值9,问题是在进行类型转换时。 –
但它是一个字符串,你确定swifty可以改变任何你想强制解开的int32吗? –