如何使用jsonPath或替代方法在JSON结构中从childNode中查找parentNode?

时间:2015-01-30 10:56:35

标签: javascript jquery json

我需要在JSON结构中找出childNode中的parentNode。例如,我需要知道"view_id": "f"的父级是什么。

我正在评估jsonPath但我找不到父运算符。

我现在想:

  • jsonPath是否有一个父运算符,或者有一个替代运算符,可以类似地使用它?
  • 如果没有替代库或解决方案吗?

您可以在此处测试JSON结构:http://jsonpath.curiousconcept.com/

[
    {
        "view_id": "a",
        "views": [
            {
                "view_id": "b",
                "views": [
                    {
                        "view_id": "c"
                    },
                    {
                        "view_id": "d"
                    }
                ]
            },
            {
                "view_id": "e",
                "views": [
                    {
                        "view_id": "f"
                    },
                    {
                        "view_id": "g"
                    }
                ]
            },
            {
                "view_id": "h"
            }
        ]
    },
    {
        "view_id": "i",
        "views": [
            {
                "view_id": "l",
                "views": [
                    {
                        "view_id": "m",
                        "views": [
                            {
                                "view_id": "n"
                            },
                            {
                                "view_id": "o"
                            }
                        ]
                    }
                ]
            },
            {
                "view_id": "p"
            }
        ]
    },
    {
        "view_id": "q"
    }
]

1 个答案:

答案 0 :(得分:2)

我发现这个特定问题有两种可能的解决方案,因为我的理解jsonPath不允许我为节点找到parent

解决方案A:

  • 添加属性" parent_id"到JSON中的每个节点,使用jsonPath查询JSON。

解决方案B:

  • 不使用jsonPath执行此任务,而是将JSON中的内存说唱呈现为" flat"数组,当填充数组时,我可以向每个节点添加一个" parent_id"至于找到一个子节点,我总是需要知道它的父节点(如注释中所建议的那样)。任何搜索都在" flat"数组使用JS。