gpt4 book ai didi

java - 您可以在 POJO 类中同时使用 @XmlElement 和 @JsonProperty

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

我有一个 json 有效负载和一个 xml 有效负载,并且我想将这两个有效负载映射到一个 POJO 类中。一个端点返回 json,另一个端点返回 xml。我可以将两者合并到一个 pojo 类中吗?

{
"house": 'big',
"has-large-house": "yes"
}

<completed-houses>
.....
</completed-houses>
public PayloadResponse(
@JsonProperty("house") final String house,
@JsonProperty("has-large-house") final String hasLargeHouseList,
@XmlElement(name="completed-houses") final String completeHouses) {
this.house = house;
this.hasLargeHouseList = hasLargeHouseList;
this.completeHouses = completeHouses;
}

然后是这些属性的 getter 和 setter。

最佳答案

是的!您可以使用 Jackson module for JAXB annotations 将 Jackson 和 JAXB 注释组合在同一个 POJO 中。以便 Jackson 能够理解 JAXB 注释,并且 jackson-dataformat-xml用于序列化为 XML。

这是一个例子:

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.xml.bind.annotation.XmlElement;
import java.io.IOException;
import java.io.StringWriter;

@Data
@NoArgsConstructor
public class PayloadResponse {
private String house;

@JsonProperty("has-large-house")
private boolean largeHouse;

@XmlElement(name = "completed-houses")
private String completedHouses;

public static void main(String[] args) throws IOException {
ObjectMapper xmlMapper = new XmlMapper();
JaxbAnnotationModule module = new JaxbAnnotationModule();
xmlMapper.registerModule(module);

PayloadResponse response = new PayloadResponse();
response.setHouse("The White House");
response.setLargeHouse(true);
response.setCompletedHouses("1600 Pennsylvania Ave.");

StringWriter stringWriter = new StringWriter();

// Serialize value as XML.
xmlMapper.writeValue(stringWriter, response);
System.out.println("XML=" + stringWriter);

// Serialize value as JSON.
ObjectMapper jsonMapper = new ObjectMapper();
stringWriter.getBuffer().setLength(0);
jsonMapper.writeValue(stringWriter, response);
System.out.println("JSON=" + stringWriter);
}
}

输出以下内容:

XML=<PayloadResponse>
<house>The White House</house>
<has-large-house>true</has-large-house>
<completed-houses>1600 Pennsylvania Ave.</completed-houses>
</PayloadResponse>

JSON={"house":"The White House",
"completedHouses":"1600 Pennsylvania Ave.",
"has-large-house":true}

关于java - 您可以在 POJO 类中同时使用 @XmlElement 和 @JsonProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767534/

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