I have a JSON object that looks like this:
[
{
"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
}]
}
}
]
I need to count how many times selected.Fast has occurred. I am trying with stream and this is what I have written so far:
List<Map<String, Object>> jsonObj = mapper.readValue(jArr, new TypeReference<List<Map<String, Object>>>(){});
Map<String, Long> 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());
But I am getting count of all the key inside selection object, and I want count for specific JSON key which is selected.Fast.
For example:
selected.Fast:"7173" -> occurred 5 times
selected.Fast:"123" -> occurred 2 times
Any help would be appreciated.