我有一个复杂的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"}


在这里,我们有类别水果,其中Apple,Orange,Grapes和Guava为“ OR”,菠萝为“ AND”类型,而香蕉为“ Not”。一旦尝试

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


它返回我

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


但我希望List成为

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


JSON路径中是否有一种方法可以获取结构相似的内容

最佳答案

那可能不是您期望的答案,但是我认为JsonPath不可能实现。

引用jayway/JsonPath


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



..-深度扫描运算符
?() - 一种表达
[,(,)]-多个数组索引



  不定路径始终返回一个列表(由当前JsonProvider表示)。


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

关于javascript - JSONPath排除为单独的JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29095426/

10-13 00:33