Да, вы можете предоставить свой собственный десериализатор и делать все, что пожелаете:
public class JsonBooleanDeserializer implements JsonDeserializer<Boolean>{
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
try {
String value = json.getAsJsonPrimitive().getAsString();
return value.toLowerCase().equals("true");
} catch (ClassCastException e) {
throw new JsonParseException("Cannot parse json date '" + json.toString() + "'", e);
}
}
}
затем вы добавляете этот десериализатор в ваш анализатор GSON:
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Boolean.class, new JsonBooleanDeserializer());
Gson gson = builder.create();
gson.fromJson(result, Boolean.class);
GSON нужно как-то знать, что это логическое значение, поэтому оно работает только тогда, когда вы предоставляете базовый класс (Boolean.class).
Это также работает, когда вы помещаете в него весь объект класса значений и где-то внутри него есть логическое значение:
открытый класс X {boolean foo; } будет работать с JSON {foo: TrUe}