gpt4 book ai didi

json - 具有异构数组的 Swift 可解码 JSON 字典

转载 作者:行者123 更新时间:2023-12-01 01:06:21 25 4
gpt4 key购买 nike

我有一些以下列格式返回的 JSON,

{
"Random Word": [
[
"2017-08-10",
6
],
[
"2017-08-11",
6
],
[
"2017-08-15",
4
]
],
"Another Random Word": [
[
"2017-08-10",
4
],
[
"2017-08-11",
4
],
[
"2017-08-12",
1
],
[
"2017-08-14",
2
],
[
"2017-08-15",
4
],
[
"2017-08-16",
1
]
]
}

问题是“键”每次都会不同,“值”包含异构的字符串数组(应转换为日期)和整数。

有没有办法使用 Swift 的 Decodable 协议(protocol)将其转换为对象?

这是一个结构,它可以被解码为,

struct MyJSONData: Decodable {

var myInfo: Dictionary<String, [[Any]]>?
...
}

但是,如果有更好的方法来构建结构,我洗耳恭听!

提前致谢。

最佳答案

我相当确定您的情况与我最近发布的问题类似:Flattening JSON when keys are known only at runtime

如果是这样,您可以使用以下解决方案:

struct MyJSONData: Decodable {
var dates = [Any]()

init(from decoder: Decoder) throws {
var container = try decoder.unkeyedContainer()

// Only use first item
let stringItem = try container.decode(String.self)
dates.append(stringItem)
let numberItem = try container.decode(Int.self)
dates.append(numberItem)
}
}

let decoded = try! JSONDecoder().decode([String : [MyJSONData]].self, from: jsonData).values
// Returns an Array of MyJSONData

工作解决方案:http://swift.sandbox.bluemix.net/#/repl/59949d74677f2b7ec84046c8

关于json - 具有异构数组的 Swift 可解码 JSON 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com