我有一个简单的 JSON 对象:
{
"values": {
"a":"",
"b":"",
"c":"",
"d":"",
"e":""
}
}
我想以这种方式将其解码为 Swift 结构,我以后可以迭代其中的键values
与我收到 JSON 对象的顺序完全相同.
这在斯威夫特中可能吗?
我的尝试如下:
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" : ""}
]
}
然后以正确的顺序存储键,以便能够根据需要迭代它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)