我有钥匙清单
List<String> traverses = Arrays.asList("json1", "json2", "json3", "json4", "json5");下面是JSONObject
{
"json1": {
"json2": {
"json3": {
"json4": {
"json5": {
"data": [
{
"key": "9941",
"doc_count": 14
},
{
"key": "9920",
"doc_count": 11
},
{
"key": "9933",
"doc_count": 11
},
{
"key": "9931",
"doc_count": 6
},
{
"key": "9932",
"doc_count": 4
}
]
}
}
}
}
}
}我想使用Lambda在JSONObject上面迭代给定的json键(遍历)。
我是用传统的方式实现的。
JSONObjet jsonObject = getJSONObject();
for (String key : traverses) {
jsonObject = jsonObject.optJSONObject(key);
}但是寻找高级方法(使用Stream/Lambda)来实现同样的目标。
发布于 2022-08-25 11:54:46
这相当于您的循环:
JSONObjet jsonObject = traverses.stream().reduce(
getJSONObject(),
JSONObject::optJSONObject,
(c1, c2) -> null);它使用的是reduce方法,不幸的是它需要一个没有多大意义的组合器参数。幸运的是,在这种情况下,它实际上并没有调用它,所以我只是让它返回null。
发布于 2022-08-25 11:21:02
traverses.stream().forEach((key)-> {jsonObject = jsonObject.optJSONObject(key); })
https://stackoverflow.com/questions/73486498
复制相似问题