Json 无法强制转换类型为'__NSCFDictionary';至';不可变数组
我向区块链API发出GET请求,以下是我得到的:Json 无法强制转换类型为'__NSCFDictionary';至';不可变数组,json,swift,Json,Swift,我向区块链API发出GET请求,以下是我得到的: { "USD": { "15m": 1973.51, "last": 1973.51, "buy": 1973.51, "sell": 1970.5, "symbol": "$" }, "ISK": { "15m": 204455.64, "last": 204455.64, "buy": 204
{
"USD": {
"15m": 1973.51,
"last": 1973.51,
"buy": 1973.51,
"sell": 1970.5,
"symbol": "$"
},
"ISK": {
"15m": 204455.64,
"last": 204455.64,
"buy": 204455.64,
"sell": 204143.8,
"symbol": "kr"
},
"HKD": {
"15m": 15400.36,
"last": 15400.36,
"buy": 15400.36,
"sell": 15376.88,
"symbol": "$"
},
"TWD": {
"15m": 59959.18,
"last": 59959.18,
"buy": 59959.18,
"sell": 59867.73,
"symbol": "NT$"
}
}
我尝试解析USD子对象,这是我的代码:
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error);
} else {
let responseData = String(data: data!, encoding: String.Encoding.utf8);
print(responseData);
var USD = [String]()
do{
if let ipString = NSString(data:data!, encoding: String.Encoding.utf8.rawValue) {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [NSDictionary];
USD = json.map { ($0 as! [String: AnyObject])["USD"] as! String }
}
}
catch{
print("Parse JSON failed")
}
}
})
但当我运行它时,出现了一个错误:
无法将类型为“\uu NSDictionaryM”的值强制转换为“NSArray”
我知道,
USD
更像一个[String:AnyObject]
,但它也不起作用。有解决方案吗?这里没有一个json响应是数组类型的,都是字典类型的。这样做,希望它能解决您的问题:
var USD = [String: AnyObject]()
do{
if let ipString = NSString(data:data!, encoding: String.Encoding.utf8.rawValue) {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: AnyObject];
if let usd = json.["USD"] as? [String: AnyObject] {
USD = usd
}
}
}
catch{
print("Parse JSON failed")
}
为什么要使用
NSString
和NSDictionary
?