Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?
1 fastjson
fastJson在转换java对象为json的时候,默认是不序列化null值对应的key的也就是说当对象里面的属性为空的时候,在转换成json时,不序列化那些为null值的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package top.sogrey.java2Json;
import top.sogrey.java2Json.bean.User;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature;
public class fastjsonDemo {
public static void main(String[] args) { User user = new User(); user.setUserName("Sogrey"); String str = JSONObject.toJSONString(user); System.out.println(str); } }
|
但是如果想把null对应的key序列化出来呢?
1 2 3 4 5 6 7
| str = JSONObject .toJSONString( user, new SerializerFeature[] { SerializerFeature.WriteMapNullValue }); System.out.println(str);
|
想字符类型字段如果为null,转换输出为”“,而非null ,需要多加一个参数:WriteNullStringAsEmpty
1 2 3 4 5 6
| str = JSONObject.toJSONString(user, new SerializerFeature[] { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty }); System.out.println(str);
|
2 Gson
gson和fastjson一样,默认是不序列化null值对应的key的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package top.sogrey.java2Json;
import com.google.gson.Gson; import com.google.gson.GsonBuilder;
import top.sogrey.java2Json.bean.User;
public class GsonDemo {
public static void main(String[] args) { User user = new User(); user.setUserName("Sogrey"); Gson g = new GsonBuilder().create(); String str = g.toJson(user); System.out.println(str); } }
|
若是想序列化null值对应的key,只需要将以上创建代码改成以下代码就行:
1 2 3 4
| g = new GsonBuilder().serializeNulls().create(); str = g.toJson(user); System.out.println(str);
|
github