如何在Java中查找嵌套Map中的键值

问题描述 投票:0回答:1

我正在查询 Open Search,它返回

Map<String, Object>
对象(表示 Open Search 中的 JSON)。我有一条像
key1.key2.key3
这样的路径,我想获取这条路径上的值。基本上,我想要相当于 Java 中 JavaScript 的
givenMap["key1"]["key2"]["key3"]
。该路径可能在地图中不存在。 Java 中有一些处理自由格式地图的标准方法吗?

目前这就是我所做的 -

Object currentValue = givenMap;
String[] keys = path.split("\\.")
for (String key : keys) {
    if (currentValue instanceof Map) {
        currentValue = ((Map<Object, Object>) currentValue).get(key);
    } else {
       currentValue = null; break;
    }
}
return currentValue;

这可行,但我想知道这在某些情况下是否会中断。

java
1个回答
0
投票

使用 Apache BeanUtils 访问嵌套值 -

try { 
    Object value = PropertyUtils.getProperty(givenMap, path);
} catch (Exception e) {
    // log
}

这期望

path
是点分隔键。

© www.soinside.com 2019 - 2024. All rights reserved.