Gson将Json字符串转为javabean时boolean值转为int类型的处理方式

原创 2018年04月16日 17:17:01

因为项目中有需求将返回的json中的boolean字段改为int类型的1或者0来处理适配问题。因此搜了一圈发现唯一的解决方法是写一个JsonTypeAdapter类注解方法来转换。

public class IntTypeAdapter extends TypeAdapter<Integer> {
    @Override
    public void write(JsonWriter out, Integer value) throws IOException {
        if (value == null) {
            out.nullValue();
        } else {
            out.value(value);
        }
    }

    @Override
    public Integer read(JsonReader in) throws IOException {
        JsonToken peek = in.peek();
        switch (peek) {
            case BOOLEAN:
                return in.nextBoolean()?1:0;//如果为true则返回为int的1,false返回0.
            case NULL:
                in.nextNull();
                return null;
            case NUMBER:
                return in.nextInt();
            case STRING:
                return toInteger(in.nextString());
            default:
                throw new JsonParseException("Expected BOOLEAN or NUMBER but was " + peek);
        }
    }

    /**
     * true  TURE 都为true
     * "0" 为 false
     * "1" 为 true
     * @param name
     * @return
     */
    public static int toInteger(String name) {
        if (TextUtils.isEmpty(name)){
            return 0;
        }else{
            if (name.equalsIgnoreCase("true")){
                return 1;
            }else if (name.equalsIgnoreCase("false")){
                return 0;
            }else if (name.equals("1")){
                return 1;
            }else if (name.equals("0")){
                return 0;
            }
        }
        return 0;
    }
}

那么在实体javabean中调用时直接如下图所示

public class ClientItemDT extends BaseDT{

    public String MAC;
    public String HostName;
    @JsonAdapter(IntTypeAdapter.class)
    public int ControlStatus;//true为正处于受控状态, false为未处于受控状态 1:true; 0:false
}
这样的话,即使后台返回的json中的ControlStatus字段为boolean类型的true,或者为String类型的“true”或“1”,都会被默认改为int类型的1.

Gson将字符串转map时,int、long默认为double类型

import com.google.gson.*; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; ...
  • zzm628
  • zzm628
  • 2017-08-25 11:03:18
  • 684

gson解析泛型和将泛型转为json字符串

  • 2015年10月30日 14:49
  • 170KB
  • 下载

利用Gson使json字符串与java bean/list/map之间的相互转换

public class GsonPracticeUtil { public static void main(String[] args) { Gson gson = new Gson(); ...
  • u013399093
  • u013399093
  • 2016-01-14 15:30:24
  • 2834

gson int long自动转换为double

原因是因为未指定类型,结果默认为double。 换成了jackson来实现。
  • sunhuwh
  • sunhuwh
  • 2015-12-10 21:32:11
  • 3591

Gson解析boolean值的注意

public class GsonUtils { public static T changeGsonToBean(String gsonString, Class cls) { Gson g...
  • zhuhai__yizhi
  • zhuhai__yizhi
  • 2014-11-06 15:15:51
  • 3289

gson和JavaBean之间的转换

一、gson主要用来对JavaBean序列化和反序列化 gson可以把JavaBean序列化为符合json格式的字符串,也可以将json字符串反序列为JavaBean 需要导入的包: gson-2...
  • daolingren
  • daolingren
  • 2015-05-02 00:01:49
  • 3014

解决Gson解析数据用map接收时int自动转化为double问题

Gson可以将json字符串转换成map, 但是在转成map时, 原json字符串中的int , long型的数字会默认被转换成double类型 , 导致数字会多一个小数点 , 如 1 会转成 1.0...
  • q649381130
  • q649381130
  • 2017-12-12 14:10:51
  • 606

GSON toJson()以及fromJson()方法中int 和string类型都可以相互转换的

GSON   toJson()以及fromJson()方法中int 和string类型都可以相互转换的,gson内部自动就转换了。也就是说服务器的json数据中某个属性是string类型的,客户端解析...
  • u011682673
  • u011682673
  • 2016-09-20 19:57:39
  • 3035

Json与gson将字符串转换JavaBean比较

Json和gson都可以将json格式的字符串转换成JavaBean对象 一、字符串不为 " " 时: 1.Json转换方式: Json转换时必须先将字符串转换成Json对象,然后转换为JavaBea...
  • daolingren
  • daolingren
  • 2015-05-02 11:51:44
  • 2116

PHP--当其他类型转换为 boolean类型 时,以下值被认为是FALSE

当其他类型转换为 boolean类型 时,以下值被认为是FALSE:  布尔值 FALSE 整型值 0(零) 浮点型值 0.0(零) 空白字符串和字符串"0" 没有成员变量的数组 没有单元...
  • hanbenpao
  • hanbenpao
  • 2017-04-13 16:32:35
  • 857
收藏助手
不良信息举报
您举报文章:Gson将Json字符串转为javabean时boolean值转为int类型的处理方式
举报原因:
原因补充:

(最多只允许输入30个字)