public class User {
private Long user_id;
private String user_name;
public User() {
}
public User(Long userId, String name) {
this.user_id = userId;
this.user_name = name;
}
public Long getUser_id() {
return user_id;
}
public void setUser_id(Long user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public void setAge(int age) {
}
public int getAge() {
return 18;
}
public void setPwd() {
}
public String getPwd() {
return "pwd";
}
}
public class GsonAndFastJsonDemo {
public static void main(String[] args) {
Gson gson = new Gson();
String res = gson.toJson(init());
System.out.println(res);
res = JSON.toJSONString(init());
System.out.println(res);
}
static User init() {
User user = new User();
user.setUser_id(1L);
user.setUser_name("威少");
return user;
}
}
结果
gson:{"user_id":1,"user_name":"威少"}
fastjson:{"age":18,"pwd":"pwd","user_id":1,"user_name":"威少"}
原因是:
fastjson在序列化的时候, 凡是有getMethod方法,其对应属性不管是否已定义, 都能返回值。
gson 在序列化对象的时候, 则显得很干净, 没有定义属性, 哪怕提供了getMethod, 对它也是无济于事。