繁体   English   中英

使用Decodable解码具有不同键值对的JSON

[英]Decoding JSON with varying key-value pair using Decodable

我正在尝试使用具有以下结构的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对象的大小。

这里的麻烦在于,费率都是不同的键值对,这与此处此处的帖子不同。 我的代码到目前为止:

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结构下提出建议,那将很有帮助,一个人应该如何编写该结构?

我的参考: 视频

关键rates的值是字典,而不是数组。

最合理的方法是将对象解码为字典

let rates: [String:String]

或者,创建一个结构化Rate (例如,使用员currencyvalue ),并编写一个自定义初始化程序,以将字典( key -> currencyvalue -> value )映射到Rate数组

注意:请考虑未指定的AnyObjectAny不能用作目标类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM