java - Jersey/JAXB 将不同的 JSON 格式绑定(bind)到单一类型的 java 对象

标签 java json jersey jackson

假设我在下面定义了 2 种不同类型的 JSON,我需要将它们映射到相同类型的 Java 对象。

类型A

{
"startDate": "2013-05-10",
"endDate": "2013-05-19",
"value": "1.5"
}

类型B

{
"startDate": "2013-05-10",
"endDate": "2013-05-19",
"data": "1.5"
}

我想使用 Jersey/Jackson 将它们映射到一个 Java 类:

@XmlRootElement
public class DataPoint{

    public String startDate;
    public String endDate;
    public String value; //What do I do here???
}

本质上,datavalue 应该被认为是等价的。现在使用 Jersey/Jackson 自动完成到 DataPoint 的转换,我如何针对此用例进行自定义? 我正在使用 Jersey 客户端 API。

最佳答案

你只需要在你的 POJO 中有 2 个从 JSON 映射的 setter。

public class TestPojo
{
  String startDate;
  String endDate;
  String content;
 //Default Constructor.
 //Getter and Setter for startDate and endDate


    public void setValue(String content)
    {
        this.content = content;
    }


    public void setData(String content)
    {
        this.content = content;
    }  

 }

我的测试:

        String s = "{\"startDate\": \"2013-05-10\",\"endDate\": \"2013-05-19\",\"value\": \"value1.5\"}";
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        TestPojo pojo = mapper.readValue(s, TestPojo.class);
        System.out.println(pojo);
        s = "{\"startDate\": \"2013-05-10\",\"endDate\": \"2013-05-19\",\"data\": \"data1.5\"}";

        mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        pojo = mapper.readValue(s, TestPojo.class);
        System.out.println(pojo);

输出:

TestPojo [startDate=2013-05-10, endDate=2013-05-19, content=value1.5]
TestPojo [startDate=2013-05-10, endDate=2013-05-19, content=data1.5]

关于java - Jersey/JAXB 将不同的 JSON 格式绑定(bind)到单一类型的 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679840/

相关文章:

java - 我如何使用 TestNG 框架执行 xml 文件中多个类的脚本

java - Apache POI - 从 Excel 中的应用程序中删除行

json - 如何避免 Mongoose 中的重复条目

python - 网页抓取代码中出现 JSON 错误,如何修复?

java - 使用 Android Google Maps API 设置 MapType 空指针异常

java - 如何知道 Runnable 被安排重复执行

html - 我需要找到处理 JSON 的解决方案

java - JAX-RS Provider 的 Filter 方法永远不会被调用

security - session 管理 : How to generate Authentication token for REST service ?( Jersey )

java - 这个奇怪的泽西警告是什么意思?