fastjson Desearialization fails when there is no default constructor

gopyfrb3  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(141)

I took the latest version of code from GitHub. I don't have zero argument constructor in my POJO.

When I try to get the Object from string it fails and throws an exception like this.

Exception in thread "main" com.alibaba.fastjson.JSONException: default constructor not found. class com.alibaba.fastjson.Student
at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:467)
at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:213)
at com.alibaba.fastjson.parser.ParserConfig.createJavaBeanDeserializer(ParserConfig.java:656)
at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:573)
at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:386)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:658)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:365)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:269)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:488)
at com.alibaba.fastjson.JSON.main(JSON.java:1068)

Here is my code.

Student s = new Student("vineel", "20");
    String hell = JSON.toJSONString(s);
    Student model2 = JSON.parseObject(hell, Student.class);
    System.out.println(model2);

I defined a simple Student class

public class Student {

private String name;
private String age;
Student(String name,String age){
this.name = name;
this.age = age;
}
@OverRide
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}

}

dsf9zpds

dsf9zpds1#

I have the same exception....when version 1.2.51. My class constructor like your's not public.

相关问题