gpt4 book ai didi

java - XML/REST Spring Web 服务中未考虑 @XmlElementWrapper

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:47 25 4
gpt4 key购买 nike

我想为 xml 根元素和列表元素指定自定义名称。但注释不起作用。

@XmlRootElement(name = "test")
@XmlAccessorType(XmlAccessType.FIELD)
public class TestRsp {
@XmlElementWrapper(name = "persons")
@XmlElement(name = "pax")
private List<Person> persons;
}

public class Person {
private String name;
private String age;
}

用法:

@RestController
public class MyServlet {
@RequestMapping("/test")
public TestRsp test() {
//...
return rsp;
}
}

结果:

<TestRsp> <!-- should be named "test" -->
<persons>
<persons> <!-- should be named "pax" -->
<name />
<age />
</persons>
<persons>
//...
</persons>
</persons>
</TestRsp>

所以我的 xml 注释没有被拾取。但为什么呢?

最佳答案

尝试使用@JsonProperty注释。

它应该看起来像这样:

@JsonProperty("test")

编辑1:

尝试注释您想要更改的字段的 getter,如下所示:

@XmlElement(name="someName")

编辑2:

@XmlRootElement(name="persons")
public class Root {


private List<String> someList;


@XmlElement(name="pax")
public List<String> getSomeList() {
return someList;
}

public void setSomeList(List<String> someList) {
this.someList = someList;
}

public Root(String numValue,List<String> someListValue) {
this();
this.number = numValue;
this.someList = someListValue;
}

/**
*
*/
public Root() {
// TODO Auto-generated constructor stub
}
}

也许这会提供:

 <persons>
<pax>FOO</pax>
<pax>BAR</pax>
</persons>

编辑3:

也许如果您想让您的解决方案正常工作,您需要在模型类中添加一个名为 jaxb.properties 的文件,其中包含以下条目:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

关于java - XML/REST Spring Web 服务中未考虑 @XmlElementWrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44384199/

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