2011-01-18 8 views
0

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

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

答えて

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なので、基本クラス(Boolean.class)を指定した場合にのみ機能します。 値オブジェクト全体のクラスをその中に入れて、その内部にブール値があるときもうまくいきます:

public class X {boolean foo; }はJSON {foo:TrUe}

で動作します
関連する問題