现象:
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的方法