使用Jackson

时间:2017-05-21 09:55:48

标签: java json jackson

我有以下形式的JSON请求:

{
  "type": "Car"
  "data": {
      "object": {
          "id": "1"
          "color": "Red"
          "plate": "J124D"
      },
      "owner": {
          "name": "John"
      }
  }
}

现在,type字段指示对象字段的内容。在上面的示例中,type = Car表示对象容器将具有id,color和plate字段。但是,如果type = Plane,则Object字段将具有id,翼展,制造商等。基本上,type字段将动态地指示Java对象对应的对象" object"。我对Jackson很新,所以我正在寻找一些关于如何在代码中实现这种类型的动态映射的指针。到目前为止,我有这个,

public class Request {
    @JsonProperty
    String type;

    @JsonProperty
    Data data; // Probably need a custom deserializer here?
}

另一个困难是请求的使用。数据可能必须转换为类似CarData或PlaneData的内容,以便调用者可以轻松地执行request.getType(),然后从请求中提取数据,并将其转换为适当类型的数据(Car或Plane)。

2 个答案:

答案 0 :(得分:1)

一种简单的方法是使用Map<String, Object>映射data属性:

public class Request { 

    private String type;
    private Map<String, Object> data;

    // Getters and setters
}

您可能会发现此answer有用。

答案 1 :(得分:0)

为对象标记创建POJO。使用JSONObject类,您可以相应地将值映射到java POJO。

参考:https://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/