【发布时间】:2020-12-03 00:57:39
【问题描述】:
我正在使用 groovy(使用 HttpResponse - Unirest)向 URL 发出 POST 请求,并将响应作为 JSONObject 检索。
接下来,我将使用该响应创建一个地图,使用:
Map<String, Object> myMap = new HashMap<>(response.toMap())
我的 JSON 响应是这样的(很抱歉看起来像一个奇怪的响应,但我不得不删除敏感信息):
{
"responses": [
{
"took": 123,
"timed_out": true,
},
"hits": {
"total": 123,
"max_score": null,
"hits": [
{
"_source": {
"message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum payloadType=JSONpayload=[{"some json payload here"}]
}
}
]
]
}
}
对此我有两个问题:
1 - 当我尝试打印键和值时,键是“响应”,所有其他部分都是值。这是正常的吗?我也不能使用 put 函数向映射添加值。这意味着,我的地图目前有点时髦,我似乎找不到解决方案来解决这个问题。我应该使用另一个库吗?我不介意使用另一个,我只需要找到一种方法来制作一张我可以使用的地图。
2 - 我需要修剪我的地图值以仅在特定字符串之后显示结果,在这种情况下,我需要使用“payloadType = JSONpayload =”之后的JSON有效负载填充我的地图以将其存储在一个变量,然后使用该信息。我怎样才能做到这一点?正则表达式是否足以实现它?我正在考虑使用迭代器来遍历所有值,然后将它们修剪为变量。对于这种情况,这是一个好的解决方案吗?
对不起,如果有什么令人困惑的地方,但我还是 Java 和 Groovy 的新手,这是我在项目中的第一个任务。
谢谢!
【问题讨论】:
-
一般你想用
JSON.parse(jsonResponse),然后就可以遍历树,访问你需要的字段stackoverflow.com/questions/6688090/…
标签: java json groovy hashmap httpresponse