带有未知编码键和值的Swift可解码

时间:2018-11-04 12:21:38

标签: ios swift decodable

我想从服务器解码以下对象

{"USD":6385.74,"JPY":715249.73,"EUR":5582.36}

但是我想使用具有未知键和值的可解码结构。这可能吗?

此致

Spyros

2 个答案:

答案 0 :(得分:2)

您可以尝试

let res = try? JSONDecoder().decode([String:Double].self,from:data)
print(res["USD"])

这将使您能够解码任何密钥

答案 1 :(得分:-1)

当我使用未知的JSON(因为我知道所有可能的键并需要所有键)时,我使用了SwiftyJSON库:documentation

使用它比内置JSON解码器容易得多

在您的情况下为:

var jsonString = "{\"USD\":6385.74,\"JPY\":715249.73,\"EUR\":5582.36}"
let json = JSON(parseJSON: jsonString)

然后您可以做很多事情,例如遍历键

for (key, value) in json {
    if let currency = key.string {
        print (currency,value)
    }
}

查看https://github.com/SwiftyJSON/SwiftyJSON

中的文档