Usando codificável com chave que às vezes é um Int e outras vezes um String
Eu tenho uma API que às vezes retornará uma chave específica (neste casoid
) no JSON como Int e outras vezes retornará a mesma chave que uma String. Como uso codificável para analisar esse JSON?
struct GeneralProduct: Codable {
var price:Double!
var id:String?
var name:String!
private enum CodingKeys: String, CodingKey {
case price = "p"
case id = "i"
case name = "n"
}
init(price:Double? = nil, id: String? = nil, name: String? = nil) {
self.price = price
self.id = id
self.name = name
}
}
Eu continuo recebendo esta mensagem de erro:Expected to decode String but found a number instead
. O motivo pelo qual ele retorna um número é porque o campo de identificação está vazio e, quando o campo de identificação está vazio, o padrão é retornar 0 como um ID que codificável se identifica como um número. Basicamente, posso ignorar a chave de identificação, mas codificável não me dá a opção de ignorá-la ao meu conhecimento. Qual seria a melhor maneira de lidar com isso?
Aqui está o JSON. É super simples
Trabalhando
{
"p":2.12,
"i":"3k3mkfnk3",
"n":"Blue Shirt"
}
Erro - porque não há um ID no sistema, ele retorna 0 como padrão, que codificável obviamente vê como um número oposto à string.
{
"p":2.19,
"i":0,
"n":"Black Shirt"
}