1、Gson是直接根据字段序列化的,而fastjson是根据getter()方法序列化,看下面的例子:
public class User {
private String name;
private int age;
private boolean developer;
private Integer integerNumber;
private Double doubleNumber;
private Float floatNumber;
private Boolean human;
}
测试:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import json.gsontest.NullToEmptyAdapterFactory;
import json.gsontest.User;
public class MainTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
User user = new User();
// System.out.println(user);
Gson gson = new GsonBuilder().serializeNulls()
// .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory<String>())
// .registerTypeAdapterFactory(new NullIntegerToEmptyAdapterFactory<Integer>())
.registerTypeAdapterFactory(new NullToEmptyAdapterFactory<Object>()).create();
String jsonString = gson.toJson(user);
System.out.println(jsonString);
jsonString = JSON.toJSONString(user, NullToEmptyFilter.filter, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty);
System.out.println(jsonString);
}
}
输出结果1:
{"name":"","age":"0","developer":false,"integerNumber":"","doubleNumber":"","floatNumber":"","human":null}
{}
User类加入getter()方法后
public class User {
private String name;
private int age;
private boolean developer;
private Integer integerNumber;
private Doubl