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 对象实例,因为一个键可以有多种对象值。
在调用 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 对象实例,因为一个键可以有多种对象值。