Gson转换的一些方式

来源:互联网 发布:巧手十字绣软件 编辑:程序博客网 时间:2024/05/16 19:07

现象:
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的方法
这里写图片描述