gpt4 book ai didi

java - 具有默认无参数构造函数时出现解码错误 Jaxb - "Class does not have a default no arg constructor"

转载 作者:行者123 更新时间:2023-12-02 13:34:31 24 4
gpt4 key购买 nike

我正在尝试解码以下 XML,但出现异常:“1 个 IllegalAnnotationExceptions EntityVersionInfo 计数没有无参数默认构造函数。”尽管实际上有一个没有参数的构造函数。我缺少什么?

XML:

<topLevelObject>
<entityVersionInfo>
<id>111111</id>
<version>1</version>
</entityVersionInfo>
</topLevelObject>

带有注释的 Java 实体:

顶级对象:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "topLevelObject")

public class TopLevelObject {

@XmlElement(name = "entityVersionInfo")
private EntityVersionInfo versionInfo;

public TopLevelObject() {
//no args constructor
}

//GETTERS AND SETTERS HERE...
}

实体版本信息:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "entityVersionInfo")

public class EntityVersionInfo {
@XmlElement(name = "id")
private String id;

@XmlElement(name = "version")
private String version;

public EntityVersionInfo() {
//no arg constructor
}

//GETTERS AND SETTERS
}

最佳答案

将其添加到 EntityVersionInfo

@Override
public String toString() {
return "EntityVersionInfo [id=" + id + ", version=" + version + "]";
}

将其添加到 TopLevelObject

@Override
public String toString() {
return "TopLevelObject [versionInfo=" + versionInfo + "]";
}

运行这个测试我得到:

    JAXBContext context = JAXBContext.newInstance(TopLevelObject.class);
Unmarshaller u = context.createUnmarshaller();

Reader reader = new StringReader(
"<topLevelObject>\r\n" +
" <entityVersionInfo>\r\n" +
" <id>111111</id>\r\n" +
" <version>1</version>\r\n" +
" </entityVersionInfo>\r\n" +
"</topLevelObject>");
Object o = u.unmarshal(new InputSource(reader ));
System.out.println(o);

我明白了:

TopLevelObject [versionInfo=EntityVersionInfo [id=111111, version=1]]

所以你的实体代码很好,也许你的项目或其他东西中有多个EntityVersionInfo类,但是实体很好。

关于java - 具有默认无参数构造函数时出现解码错误 Jaxb - "Class does not have a default no arg constructor",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43075299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com