gpt4 book ai didi

java - Jackson FasterXML POJO 到 XML 列表

转载 作者:行者123 更新时间:2023-11-30 08:01:56 25 4
gpt4 key购买 nike

我正在使用 FasterXML Jackson 实现通过 xml-databing 包将 POJO 转换为 XML 输出。我正在尝试实现此输出:

<MyRequest>
<MySubRequest>4</MySubRequest>
<MySubRequest>5</MySubRequest>
</MyRequest>

我的类(class):

public class MySubRequest {

@JacksonXmlText
private String id;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public MySubRequest(String id) {
super();
this.id = id;
}

}

还有:

@JacksonXmlRootElement
public class MyRequest {

private Collection<MySubRequest> MySubRequest;

public Collection<MySubRequest> getRequests() {
return MySubRequest;
}

public void setRequests(Collection<MySubRequest> requests) {
this.MySubRequest = requests;
}

}

我正在测试它:

ObjectMapper mapper = new XmlMapper();
MyRequest entity = new MyRequest();
Collection<MySubRequest> myIds = new ArrayList<>();
myIds.add(new MySubRequest("12"));
myIds.add(new MySubRequest("34"));
entity.setRequests(myIds);
mapper.writeValue(System.out, entity);

但是输出是:

<MyRequest xmlns="">
<requests>
<requests>12</requests>
<requests>34</requests>
</requests>
</MyRequest>

我想知道的另一件事是如何强制输出区分大小写,即大写变量名称。

最佳答案

您可以使用JacksonXmlElementWrapper注释来忽略包装器。只需像这样使用它:

@JacksonXmlRootElement
class MyRequest {


private Collection<MySubRequest> mySubRequest;

public Collection<MySubRequest> getRequests() {
return mySubRequest;
}

@JacksonXmlProperty(localName = "MySubRequest")
@JacksonXmlElementWrapper(useWrapping = false)
public void setRequests(Collection<MySubRequest> requests) {
this.mySubRequest = requests;
}

}

这里我使用 JacksonXmlProperty 注释将元素名称用作 xml 中的“MySubRequest”。

关于java - Jackson FasterXML POJO 到 XML 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31782952/

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