Estou recebendo uma resposta JSON como esta
"dict": [
"key1" : "val1",
"key2" : "val2",
...
]
O servidor sempre retorna este dict de maneira ordenada key1, key2, ... É possível analisar este dict de maneira ordenada.
Eu posso usar
try container.decode([String: String].self, forKey: .dict)
Mas esta é uma análise não ordenada
Tento também obter um contêiner aninhado como
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)
}
}
Mas KeyedDecodingContainer<DynamicCodingKey>
também parece armazenar chaves não ordenadas quando as obtenho usando .allKeys
como HashTable padrão.
O servidor sempre retorna este dict de maneira ordenada key1, key2, ... É possível analisar este dict de maneira ordenada.
Não. Dicionários são coleções inerentemente não ordenadas. Se você obtiver a matriz de chaves do dicionário, pode acontecer que elas voltem na mesma ordem em que estão no JSON. Isso pode até acontecer de forma consistente. Mas você não deve contar com isso porque, novamente, os dicionários são coleções desordenadas. Se você está contando com um pedido específico, deve fazer com que o servidor envie um array em vez de um dicionário.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras