Json 到 Pojo 转换以响应 wit.ai

Json to Pojo converstion for response from wit.ai

在调用 wit.ai 的 /message 端点时,他们的 documentation 表示他们将发送以下格式的回复:

 {
"msg_id": "387b8515-0c1d-42a9-aa80-e68b66b66c27",
"_text": "how many people between Tuesday and Friday",
"entities": {
  "metric": [ {
    "metadata": "{'code': 324}",
    "value": "metric_visitor",
    "confidence": 0.9231
  } ],
  "datetime": [ {
    "value": {
      "from": "2014-07-01T00:00:00.000-07:00",
      "to": "2014-07-02T00:00:00.000-07:00"
    },
    "confidence": 1
  }, {
    "value": {
      "from": "2014-07-04T00:00:00.000-07:00",
      "to": "2014-07-05T00:00:00.000-07:00"
    },
    "confidence": 1
  } ]
}

}

现在我不明白的是,什么样的POJO结构可以容纳这样一个几乎所有东西都是动态的响应。 AFAIK json 中列出的实体是 <String,List<Object>> 的键值对。其中 Object 本身是一个键值对,其中值可以是任何类型的 String、float 甚至另一个映射。

在线 Json 到 Pojo 转换器在这种情况下无济于事,因为它们创建了 类 键名并且这些键是动态的。谁能帮我理解如何处理这类 jsons?

我自己一直在尝试,到目前为止,以下结构运行良好:

public class WitMsgResponse {
    @JsonProperty("msg_id")
    String msgId;

    @JsonProperty("_text")
    String text;

    @JsonProperty("entities")
    public Map<String,List<Map<String,Object>>> entities;
}

我一直在检查 instanceof 对象实例,因为一个键可以有多种对象值。