Есть ли способ заставить GSON распознать «False» как логическое?GSON False верхний регистр
например.
gson.fromJson("False",Boolean.class)
Есть ли способ заставить GSON распознать «False» как логическое?GSON False верхний регистр
например.
gson.fromJson("False",Boolean.class)
Да, вы можете предоставить свой собственный десериализатор и делать все, что вы хотите:
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). Он также работает, когда вы помещаете в него весь свой класс объектов ценности, и внутри него есть булевое значение:
public class X {boolean foo; } будет работать с JSON {foo: TrUe}