fastjson 生成json字符串时,类似_id和id的字段不能区分,导致数据出错

bkhjykvo  于 2021-11-27  发布在  Java
关注(0)|答案(2)|浏览(290)

你好,在应用中使用1.1.33及之后的版本,出现Bean生成json时出错的情况。

在Bean中有两个字段:_id和id,对应的getter和setter分别是:

public long get_id() {
        if (null != _id) {
            return _id.longValue();
        } else {
            return 0L;
        }
    }

    public void set_id(Long _id) {
        this._id = _id;
    }

    public long getId() {
        if (null != id) {
            return id.longValue();
        } else {
            return 0L;
        }
    }

    public void setId(Long id) {
        this.id = id;
    }

使用JSON.toJSONString()生成json串时,会导致id的值被_id覆盖。
新版本:

旧版本:

是需要应用在使用中规避此问题,还是FastJson兼容一下,麻烦帮忙解答。

t1qtbnec

t1qtbnec1#

建议应用做改动,比如:

public static class Model {
    private Long _id;
    private Long id;

    @JSONField(name = "_id")
    public long get_id() {
        if (null != _id) {
            return _id.longValue();
        } else {
            return 0L;
        }
    }

    @JSONField(name = "_id")
    public void set_id(Long _id) {
        this._id = _id;
    }

    public long getId() {
        if (null != id) {
            return id.longValue();
        } else {
            return 0L;
        }
    }

    public void setId(Long id) {
        this.id = id;
    }
}

相关问题