gpt4 book ai didi

json - Swift json解码丢失json对象键顺序

转载 作者:行者123 更新时间:2023-11-30 10:26:57 34 4
gpt4 key购买 nike

我有一个简单的 JSON 对象:

{
"values": {
"a":"",
"b":"",
"c":"",
"d":"",
"e":""
}
}

并且我想以这样的方式将其解码为 Swift 结构,以后我可以按照与收到的顺序完全相同的顺序迭代 values 中的键JSON 对象

这在 Swift 中可能吗?

<小时/>

我的尝试如下:

let json = "{ \"values\": { \"a\":\"\", \"b\":\"\", \"c\":\"\", \"d\":\"\", \"e\":\"\" } }"

struct JSS: Codable {
var values: [String: String?]?
}

let data = json.data(using: .utf8)

do {
let decoder = JSONDecoder()
let jss = try decoder.decode(JSS.self, from: data!)
jss.values?.map { print("\($0.key)") }
}
catch {
}

将打印:

b
e
a
d
c

最佳答案

这本身并不是 Swift 的限制。 Swift 和 JSON 字典都是无序的。 JSON 格式不保证键顺序,因此不需要解析器来保留顺序。

如果您需要有序集合,最好在 JSON 中返回键值对数组:

{
"values": [
{"a" : ""},
{"b" : ""},
{"c" : ""},
{"d" : ""},
{"e" : ""}
]
}

然后以正确的顺序存储键,以便能够根据需要迭代它们。

关于json - Swift json解码丢失json对象键顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59973284/

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