Quero desserializar algum json complexo que tem muitas chaves opcionais, em Kotlin. Estou usando Retrofit2.
Eu só me importo com um pequeno subconjunto das chaves disponíveis, então, em vez de tentar definir rigorosamente classes de dados para trabalhar com todas as entradas json possíveis, eu gostaria de ignorar chaves desconhecidas e definir as partes que me importam. Estou construindo uma fábrica Retrofit para criar meu desserializador da seguinte forma:
private val retrofit = Retrofit.Builder()
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
.baseUrl(baseUrl)
.build()
como posso configurar esse conversor de forma que o Json faça a análise sintática usando ignoreUnknownKeys=true
o comportamento (ou vice-versa, se esse for o padrão)?
Você já tentou fornecer
Json
uma instância personalizada?Explicação: Pode ser um pouco confuso sem ao menos dar uma olhada no código-fonte, mas usar
Json.asConverterFactory(...)
é equivalente aJson.Default.asConverterFactory(...)
.Isso ocorre porque
Json
o objeto complementar por si só é uma implementação deJson
(um padrão) e não um host de métodos "estáticos".