Получите количество совпадающих ключей JSON с помощью API Java Stream.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получите количество совпадающих ключей JSON с помощью API Java Stream.

Сообщение Anonymous »

У меня есть объект JSON, который выглядит следующим образом:

Код: Выделить всё

[
{
"startAt": 1617605301292,
"endAt": 1617605317095,
"duration": 15803,
"selection": {
"selected.Speed": "0",
"selected.Low": "65535",
"selected.Fast": "7173",
"selected.medium": "5"
},
"details": {
"phase": [{
"value": "2",
"timestamp": 1617605301316
}]
}
},
{
"startAt": 1617603849697,
"endAt": 1617603966378,
"duration": 116681,
"selection": {
"selected.Speed": "0",
"selected.Low": "65535",
"selected.Fast": "123",
"selected.medium": "5"
},
"details": {
"phase": [{
"value": "2",
"timestamp": 1617603849749
}]
}
}
]
Мне нужно посчитать, сколько раз был выбран вариант Fast. Я пытаюсь использовать поток, и вот что я написал на данный момент:

Код: Выделить всё

List jsonObj = mapper.readValue(jArr, new TypeReference(){});

Map counted = jsonObj.stream()
.map(x -> x.get("selection").toString() )
.collect(Collectors.toList())
.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

System.out.println(counted.toString());
Но я получаю подсчет всех ключей внутри объекта выбора, и мне нужно подсчитать определенный выбранный ключ JSON. Быстро.
Например:

Код: Выделить всё

selected.Fast:"7173" -> occurred 5 times
selected.Fast:"123"  -> occurred 2 times
Будем благодарны за любую помощь.


Подробнее здесь: https://stackoverflow.com/questions/670 ... stream-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»