java – GSON整数到特定字段的布尔值

我正在处理一个API,它发送回整数(1 = true,other = false)来表示布尔值.

我已经看过this question and answer,但我需要能够指定这个应该适用的字段,因为有时整数实际上是一个整数.

编辑:传入的JSON可能看起来像这样(也可能是String而不是int等…):

{ 
    "regular_int": 1234, 
    "int_that_should_be_a_boolean": 1
}

我需要一种方法来指定int_that_should_be_a_boolean应该被解析为布尔值,而regular_int应该被解析为整数.

我们将为Gson提供一个小钩子,一个用于布尔值的自定义解串器,即一个实现JsonDeserializer< Boolean>的类.接口:

CustomBooleanTypeAdapter

import java.lang.reflect.Type;
import com.google.gson.*;
class BooleanTypeAdapter implements JsonDeserializer<Boolean>
{
      public Boolean deserialize(JsonElement json, Type typeOfT, 
             JsonDeserializationContext context) throws JsonParseException
      {
          int code = json.getAsInt();
          return code == 0 ? false :
                   code == 1 ? true :
                 null;
      }
}

要使用它,我们需要改变我们获取Gson映射器实例的方式,使用工厂对象,GsonBuilder,这是使用GSON的常用模式方式.

GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Boolean.class, new BooleanTypeAdapter());
Gson gson = builder.create();

对于原始类型使用下面一个

 GsonBuilder builder = new GsonBuilder();
    builder.registerTypeAdapter(boolean.class, new BooleanTypeAdapter());
    Gson gson = builder.create();

享受JSON解析!

翻译自:https://stackoverflow.com/questions/27176134/gson-integer-to-boolean-for-specific-fields

转载注明原文:java – GSON整数到特定字段的布尔值