我正在查询 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;
这可行,但我想知道这在某些情况下是否会中断。
使用 Apache BeanUtils 访问嵌套值 -
try {
Object value = PropertyUtils.getProperty(givenMap, path);
} catch (Exception e) {
// log
}
这期望
path
是点分隔键。