Как уже упоминалось @Flown, структура вашего json на самом деле выглядит не очень хорошо. Что-то вроде этого имело бы больше смысла:
{
"responses": [
{
"id": 3,
"x": "ABC",
"y": {
"code": "CODE"
},
"z": {
"value": "VALUE"
}
}, {
...
}
],
...
}
Или даже лучше, если бы вы могли избавиться от x
, y
и z
и получить что-то подобное:
{
"responses": [
{
"id": 3,
"status": "STATUS",
"code": "CODE"
"value": "VALUE"
}, {
...
}
]
}
Если вы не можете изменить структуру по какой-либо причине, вы можете отфильтровать карту следующим образом:
Map<String, Object> filteredMap = map.entrySet().stream()
.filter(entry -> entry.getKey().contains("].x")
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Возвращает Map
только с записями, где ключ содержит строку ]x.
, которая должно быть хорошо в вашем примере (ответ [1 ]. x , ответ [2 ]. x , ...).
Это должно работать, но все еще не очень хорошее решение. Было бы лучше, если бы вы могли изменить структуру json.