Swift可编码:是否可以按json响应中返回的顺序获取dictionary key:values



我得到了类似的JSON响应

"dict": [ 
"key1" : "val1", 
"key2" : "val2", 
...
]

服务器总是按顺序返回这个dict key1,key2。。。有可能按顺序解析这个dict吗。

我可以使用

try container.decode([String: String].self, forKey: .dict)

但这是无序解析

我也尝试获得像这样的嵌套容器

try container.nestedContainer(keyedBy: DynamicCodingKey.self, forKey: .dict)
struct DynamicCodingKey: CodingKey {
var stringValue: String
var intValue: Int?
init?(intValue: Int) {
self.intValue = intValue
self.stringValue = "(intValue)"
}
init?(stringValue: String) {
self.stringValue = stringValue
self.intValue = Int(stringValue)
}
}

但是当我使用类似于标准HashTable的.allKeys获得无序密钥时,KeyedDecodingContainer<DynamicCodingKey>似乎也存储无序密钥。

服务器总是按顺序返回这个dict key1,key2。。。有可能按顺序解析这个dict吗。

字典本质上是无序的集合。如果您从字典中获取键数组,它们可能会以与JSON中相同的顺序返回。这种情况甚至可能持续发生。但你不应该指望它,因为字典也是无序的集合。如果您依赖于特定的顺序,那么您应该让服务器发送一个数组而不是字典。

相关内容

  • 没有找到相关文章

最新更新