当json串反序列化成JavaBean时,该javaBean是Builder模式的链式编程结果,反序列化失败,未找到默认构造函数
javaBean如下:
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Builder
@Getter
@Setter
public class TestEntity {
private String name;
private int age;
}
序列化代码如下:
import com.alibaba.fastjson.JSON;
public class Test {
public static void main(String[] args) {
String jsonStr = "{\"age\":1,\"name\":\"aa\"}";
TestEntity testEntity = JSON.parseObject(jsonStr, TestEntity.class);
}
}
错误如下:
Exception in thread "main" com.alibaba.fastjson.JSONException: default constructor not found. class com.dzcx.test.TestEntity
at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:519)
at com.alibaba.fastjson.parser.ParserConfig.createJavaBeanDeserializer(ParserConfig.java:728)
at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:645)
at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:394)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:669)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:369)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:273)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:546)
at com.dzcx.test.Test.main(Test.java:9)
版本:1.2.55
Most helpful comment
你需要为你的类加上@NoArgsConstructor,但是这个注解跟@Builder 冲突,所以你还要再加上@AllArgsConstructor