fastjson 反序列化最好设置无参构造函数

场景

在使用 fastjson 的 parseObject() 方法反序列化 json,目标对象大概长这样:

@Data
public class TestClass() {
    private String id;
    private String name;
 
    public TestClass(String name) {
        this.id = UUID.randomUUID().toString();
        this.name = name;
    }
}

对象中得到的 id 与 jsonstring 中的 id 不同。

原理

fastjson 在反序列化时在没有无参构造的情况下,默认会去找参数最多的构造函数,导致 id 被重写

解决方案

加入无参构造

    public TestClass() {}