Olá, Vitor! Tudo bem?
Usando a biblioteca Gson, uma maneira eficiente de lidar com esse problema é criando um TypeAdapter
personalizado que pode tratar essas variações de chave.
Aqui está um exemplo prático de como você pode fazer isso:
import com.google.gson.*;
import java.lang.reflect.Type;
public class CaseInsensitiveAdapter<T> implements JsonDeserializer<T> {
private final Class<T> clazz;
public CaseInsensitiveAdapter(Class<T> clazz) {
this.clazz = clazz;
}
@Override
public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
JsonObject lowerCaseJsonObject = new JsonObject();
for (String key : jsonObject.keySet()) {
lowerCaseJsonObject.add(key.toLowerCase(), jsonObject.get(key));
}
return new Gson().fromJson(lowerCaseJsonObject, clazz);
}
}
Para utilizar esse TypeAdapter
, você pode registrá-lo no Gson da seguinte forma:
Gson gson = new GsonBuilder()
.registerTypeAdapter(SeuObjeto.class, new CaseInsensitiveAdapter<>(SeuObjeto.class))
.create();
SeuObjeto objeto = gson.fromJson(jsonString, SeuObjeto.class);
Com esse TypeAdapter
, todas as chaves do JSON serão convertidas para minúsculas antes de serem deserializadas, permitindo que você lide com chaves que começam com letras maiúsculas ou minúsculas de forma uniforme.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.