Javascript JSONPath作为单独的JSON排除

Javascript JSONPath作为单独的JSON排除,javascript,json,jsonpath,Javascript,Json,Jsonpath,我有一个复杂的JSON结构。我不想把一部分排除在外,然后把清单分成两部分。一个称为“包含”,另一个称为“排除”。 下面给出了JSON示例 { "Item": { "Items": [{ "Items": [{ "category": "fruit", "Item": { "Items": [{ "Text": "Apple"

我有一个复杂的JSON结构。我不想把一部分排除在外,然后把清单分成两部分。一个称为“包含”,另一个称为“排除”。 下面给出了JSON示例

{
"Item": {
    "Items": [{
        "Items": [{
            "category": "fruit",
            "Item": {
                "Items": [{
                    "Text": "Apple"
                },
                {
                    "Text": "Orange"
                },
                {
                    "Text": "Grapes"
                },
                {
                    "Text": "Guava"
                }],
                "Types": ["Value",
                "Value",
                "Value",
                "Value"]
            },
            "Type": "Or"
        },
        {
            "category": "fruit",
            "Item": {
                "Text": "Pineapple"
            },
            "Type": "Value"
        }],
        "Types": ["Constraint",
        "Constraint"]
    },
    {
        "category": "fruit",
        "Item": {
            "Text": "Banana"
        },
        "Type": "Value"
    }],
    "Types": ["Not",
    "Constraint"]
},
"Type": "And"}
在这里,我们有一类水果,苹果、橙子、葡萄和番石榴加上“或”,菠萝加上“和”,香蕉加上“不”

Item..Items[?(@.category='fruit')]..Text
它还我

  [   "Banana",   "Apple",   "Orange",   "Grapes",   "Guava", "Pineapple"]
但我想把名单列出来

{["Apple",     "Orange",       "Grapes",       "Guava",    "Pineapple"  ]
},{["Banana"]}

在JSON路径中是否有一种方法可以获得类似结构的东西,这可能不是您所期望的答案,但我认为JsonPath不可能做到这一点

引自

在评估路径时,您需要了解路径何时确定的概念。如果路径包含以下内容,则该路径是不确定的:

  • 深度扫描操作员
  • ?()-一个表达
  • [,(,)]-多个数组索引
不确定路径始终返回一个列表(由当前JsonProvider表示)


因此,您的结果将始终是一个列表。我认为,您已经拥有的是最接近您所能获得的。

这是使用JSONPath无法做到的。

D3嵌套可能是实现这一点的方法