嗨,我需要构建一个实用程序,该实用程序将采用如下所示的键形式输入:
source.payload.header.version它应该从下面的示例json返回版本1.1.1。
"source":{
"payload":{
"Header":{
"version":"1.1.1"
我是json和json-simple的新手
最佳答案
在您要使用的库中找不到本机实现,它可以处理此类请求。因此,我想出了自己的小代码段,可能会对您有所帮助。
private static Object getNestedValue(final String path, JSONObject obj) {
String currentKey;
String currentPath = path;
while (true) {
// Get current key with tailing '.'
currentKey = currentPath.substring(0, currentPath.indexOf('.') + 1);
// Remove the current key from current path with '.'
currentPath = currentPath.replace(currentKey, "");
// Remove the '.' from the current key
currentKey = currentKey.replace(".", "");
// Check if the current key is available
if (obj.containsKey(currentKey))
obj = (JSONObject) obj.get(currentKey); // This can cause an Class Cast exception, handel with care
else if (currentKey.isEmpty()) // Check if the currentKey is empty
return obj.get(currentPath); // Return the result
else
return null;
}
}