我有一个简单的json:
{" someparam1":[1,2,3]," someparam2":[1,2,3],...}
为了解析我使用这段代码:
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary else { return }
for key in json.allKeys{
guard let array = json[key] as? [Int] else { return }
minemap[key] = array
}
其中fileprivate var minemap: [String : [Int]] = [:]
但编译器说minemap[key]
不正确!
所以我想将key
投射到String
。但是做这样的事情的最美妙的解决方案是什么:
for key as? String in json.allKeys
?
答案 0 :(得分:1)
你可以使用[String: [Int]]
代替NSDictionary
,投一次并避免所有进一步的演员。
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as?[String: [Int]] else { return }
minemap = json
如果不是所有值都具有[Int]
类型,则可能无效。如果是这种情况,请改用[String: Any]
并稍后转换值。
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as?[String: Any] else { return }
for (key, value) in json {
minemap[key] = json[key] as? [Int]
}