0

GSONに「False」をブール値として認識させる方法はありますか?

例えば

gson.fromJson("False",Boolean.class)
4

1 に答える 1

3

はい、独自のデシリアライザーを提供して、好きなことを行うことができます。

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{booleanfoo; }はJSON {foo:TrUe}で動作します

于 2011-03-04T15:47:43.610 に答える