Json与Pojo交换来自wit.ai的回复

时间:2016-11-27 09:58:27

标签: java json wit.ai

在他们documentation的来自wit.ai的呼叫/消息端点时,他们会发送以下格式的回复:

 {
"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 to Pojo转换器无法提供帮助,因为它们创建了键名类,并且这些键是动态的。谁能帮助我了解如何处理这些jsons?

1 个答案:

答案 0 :(得分:0)

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

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

    @JsonProperty("_text")
    String text;

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

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