fastjson序列化getXxx()方法的问题

日期:2019-01-15       浏览:789

一 问题

我们的待序列化对象上有 getXxx 或 setXxx 等方法时,fastjson 的 JSONObject.toJSONString() 方法默认会认为我们存在 xxx 这个属性,在序列化的时候就会帮我们序列化出 xxx 这个属性来。
  • 例子
public class User {
    private String name;
    private Integer age;
    
    
    public String getDesc () {
        return name + " : " + age;
    }
}
  • 序列化结果
{
    "name": "xxx",
    "age": 20,
    "desc": "xxx : 20"
}

二 解决方法

JSONObject.toJSONString() 第二个参数可以设置一个枚举值,告诉 fastjson 忽略掉 get 方法开头但是没有定义的属性;
JSONObject.toJSONString(obj, SerializerFeature.IgnoreNonFieldGetter)
方法上添加注解,告诉fastjson这个方法不是属性的getter方法:
public class User {
    private String name;
    private Integer age;
    
    @Transient
    @JSONField(serialize = false)
    public String getDesc () {
        return name + " : " + age;
    }
}
扫码关注有惊喜

(转载本站文章请注明作者和出处 qbian)

暂无评论

Copyright 2016 qbian. All Rights Reserved.

文章目录