Gson转换的一些方式

现象:
1:Gson转换的时候,将null也转换进去
2:Gson转换的时候将null变成空字符串转入json字符串

分析:
在java对象转换为json字符串的时候
有时候需要将null值也转换进去,有时候需要将null值转换为空字符串转换进去

1解决方法:
(1)maven引入jar包
这里写图片描述
也可以将jar包直接复制到lib
这里写图片描述

(2):创建对象转换json
这里写图片描述
(3):结果null值进入json字符串
这里写图片描述
(4):设置null值转入的关键开关
这里写图片描述

其中 使用 new GsonBuilder().setDateFormat(“yyyy-MM-dd HH:mm:ss”)设置的是时间Date类型转换为json字符串的格式化

2解决办法
将null转换为空字符串
(1):转换的方法
这里写图片描述
(2):转换方法加入时间格式转换规则
这里写图片描述
(3):自定义类1
这里写图片描述
(4):自定义类2
这里写图片描述

代码:
自定义类一

import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;

public class NullStringToEmptyAdapterFactory<T> implements TypeAdapterFactory {
	
	  public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
	      Class<T> rawType =  (Class<T>) type.getRawType();
	      if (rawType != String.class) {
	          return null;        }
	      return (TypeAdapter<T>) new StringNullAdapter();
	  }
}

自定义类二

import java.io.IOException;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

public class StringNullAdapter extends TypeAdapter<String> {
    @Override
    public String read(JsonReader reader) throws IOException {
        if (reader.peek() == JsonToken.NULL) {
            reader.nextNull();
            return "";
        }
        return reader.nextString();
    }

    @Override    
    public void write(JsonWriter writer, String value) throws IOException {
        if (value == null) {
            writer.value("");
            return;
        }
        writer.value(value);
    }
}

3:json转map的方法
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值