首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当没有默认构造函数时反序列化失败

当没有默认构造函数时反序列化失败
EN

Stack Overflow用户
提问于 2018-05-09 10:38:15
回答 2查看 1.5K关注 0票数 0

我试图使用Fastjson库进行JSON序列化。当我试图反序列化时,它不会显示默认构造函数错误。注意:这里的类是一个玩具示例。我认为,它包含了对其他maven项目中的其他类的引用,并且它实际上不可能修改每个类。

这是密码。

代码语言:javascript
复制
Student s = new Student("vineel", "20");
String hell = JSON.toJSONString(s);
Student model2 = JSON.parseObject(hell, Student.class);
System.out.println(model2);

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;
}

}

这里是错误:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 10:48:03

所以创建一个TO类。

代码语言:javascript
复制
Student model2 = JSON.parseObject(hell, StudentTO.class).asStudent();
System.out.println(model2);

public class StudentTO {

    private String name;
    private String 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;
    }
    public Student asStudent() {
        return new Student(name, age);
    }
}
票数 -1
EN

Stack Overflow用户

发布于 2018-08-31 07:17:16

将构造函数更改为。

代码语言:javascript
复制
@JsonCreator
public Student(@JsonProperty("name") String name, @JsonProperty("age") String age){
    this.name = name;
    this.age = age;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50251352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档