JSONPath排除为单独的JSON

时间:2015-03-17 09:25:01

标签: javascript json jsonpath

我有一个复杂的JSON结构。我不想排除一个部分,并在两个桶中获取列表。将One称为“包含”,将另一个称为“排除”。 示例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"}

这里我们有类别水果,其中我们的苹果,橙子,葡萄和番石榴是“OR”和菠萝与“AND”类型和香蕉是“不”。一旦我尝试

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

它让我回头

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

但我希望List为

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

JSON Path中是否有办法获得类似结构的东西

2 个答案:

答案 0 :(得分:1)

这可能不是您预期的答案,但我认为JsonPath不可能。

来自jayway/JsonPath

  

在评估路径时,您需要了解路径何时确定的概念。如果路径包含:

,则路径不确定
  • .. - 深度扫描操作员
  • ?() - 表达式
  • [,(,)] - 多个数组索引
  

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

所以你的结果将永远是一个列表。我认为你已经拥有的是最接近的。

答案 1 :(得分:1)

使用JSONPath无法完成。