嗨,我需要构建一个实用程序,该实用程序将采用如下所示的键形式输入:
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;
    }
}

09-26 17:35