所以,假设我有下一个JSON对象:
{
"key1": {
"key11": "value11",
"key12": {
"key121": "value121",
"key122": "value122",
"key123": "value123"
}
},
"key2": "value2",
"key3": "value3"
}
我将嵌套键除以点:key1.key12.key122
。目标是通过此键获得value122
。
我写了下一个解决方案:
public List<String> getEntityValuesByKeys(JSONObject entity, List<String> keys) {
List<String> values = new ArrayList<>();
JSONObject entityCopy = new JSONObject(entity.toString());
for (String key : keys) {
String[] nestedKeys = key.split("\\.");
for (String nestedKey : nestedKeys) {
if (entityCopy.get(nestedKey) instanceof JSONObject) {
entityCopy = new JSONObject(entityCopy.get(nestedKey).toString());
} else {
values.add(entityCopy.get(nestedKey).toString());
}
}
entityCopy = new JSONObject(entity.toString());
}
return values.stream().sorted().collect(Collectors.toList());
}
是否有一些类似这样的Java库?
我事先不知道JSON的深度和嵌套的关键。它只能有一个嵌套步骤,例如:key1
,并且例如在一个方法调用中更高级别。
所有输入参数和返回值必须相同。
谢谢!