我试图使用具有以下结构的Decodable解析JSON并且我被抛出错误:
未向协议“可解码”确认
JSON结构如下:
{
base = SGD;
date = "2017-12-29";
rates = {
AUD = "0.95769";
BGN = "1.2205";
THB = "24.414";
TRY = "2.8372";
USD = "0.74844";
ZAR = "9.2393";
};
}
请注意,为了便于阅读,我缩小了JSON对象的大小。
此处的问题是,费率都是不同的键值对,与帖子here和here不同。我的代码到目前为止:
struct Fixer: Decodable {
let base: String
let date: String
let rates: [AnyObject]
}
//at dataTasks
do {
let results = try JSONDecoder().decode(Fixer.self, from: data)
print(results.base)
} catch error as NSError {
print(error?.localizedDescription)
}
如果任何人都可以在具有不同键值对的JSON结构下进行建议,那么应该如何编写结构?
我的参考:video
答案 0 :(得分:0)
键rates
的值是字典,而不是数组。
最合理的方法是将对象解码为字典
let rates: [String:String]
或者创建一个结构Rate
(例如,使用成员currency
和value
)并编写一个自定义初始值设定项来映射字典(key
- > {{1 }和currency
- > value
)到value
的数组
注意:请注意,未指定的Rate
和AnyObject
都不能用作目标类型。