【问题标题】:How to map two different responses from an REST API to two different POJO如何将来自 REST API 的两个不同响应映射到两个不同的 POJO
【发布时间】:2018-07-25 11:26:26
【问题描述】:

我有一个用例,其中服务为同一个 REST API 调用返回两个不同的响应。只是响应值不同,但key是一样的。请参考下面的示例回复,

响应 1

{
   "Polygon": {
   "type": "polygon",
   "coordinates": [
         [
           [
             [
               -128.419935,
               31.761895
             ],
             [
               88.53,
               87.24
                ]
              ]
            ]
         ]
     }
}

响应 2

{
   "Polygon": {
   "type": "MultiPolygon",
   "coordinates": [
         [
           [
             [
               -118.419935,
               33.761895
             ],
             [
               89.53,
               86.24
                ]
              ]
            ]
         ]
     }
}

如果我们仔细阅读响应,那么我们可以理解这两个响应只是值(即坐标)不同。坐标是List 的两个不同嵌套级别。所以我不确定我应该如何映射响应。我正在使用Jackson 来映射响应。

我确实看过这个SO 问题,但如果属性值不同,则可以解决。有人可以通过一些灯光就可以了。

【问题讨论】:

  • 这是无效的 json。
  • 你试过抽象吗? REST API 可以返回像“Polygon”这样的对象,它是一个抽象超类。然后有两个孩子“MultiPolygon”和“SinglePolygon”,实现了具体的行为。
  • 将方法的返回类型更改为Object,然后返回第一个或第二个。 TBH 我有点不确定你在问什么

标签: java json jackson


【解决方案1】:

谢谢,@Lino。您的建议帮助我找到了解决问题的方法。我来自C++ 背景,但现在与JAVA 合作。我意识到Objectclass 层次结构的根,即所有类的superclass。所以我对上述问题的解决方案如下,

public class Polygon {

    private data boundingPolygon;

    public static class data {
        private String type;
        private Object coordinates;
    }
}

我已经对此进行了测试,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多