如何解决Swift Codable:是否可以按顺序在json响应中获取字典key:values?
我正在收到这样的JSON响应
"dict": [
"key1" : "val1","key2" : "val2",...
]
服务器始终按有序方式返回此字典key1,key2,... 是否可以有序地解析此字典。
我可以使用
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)
}
}
但是当我使用KeyedDecodingContainer<DynamicCodingKey>
像标准HashTable一样获得.allKeys
时,似乎也存储了无序键。
解决方法
服务器始终以有序方式返回此字典key1,key2,...是否有可能以有序方式解析此字典。
否。词典本质上是无序的集合。如果您从字典中获得键数组,则它们可能碰巧以与JSON中相同的顺序返回。这甚至可能会持续发生。但是您不应该指望它,因为字典又是无序的集合。如果您要依靠特定的顺序,那么应该让服务器发送一个数组而不是一个字典。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。