【问题标题】:Json to Pojo converstion for response from wit.ai来自 wit.ai 的响应的 Json 到 Pojo 转换
【发布时间】:2016-11-27 09:58:27
【问题描述】:

在调用 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 甚至另一个 map。

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

【问题讨论】:

    标签: java json wit.ai


    【解决方案1】:

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

    public class WitMsgResponse {
        @JsonProperty("msg_id")
        String msgId;
    
        @JsonProperty("_text")
        String text;
    
        @JsonProperty("entities")
        public Map<String,List<Map<String,Object>>> entities;
    }
    

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

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 2018-04-21
      • 2012-06-28
      • 2013-08-08
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      相关资源
      最近更新 更多