JSONPath исключить как отдельный JSON

У меня сложная структура 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 Path получить что-то похожее по структуре


person Kumar Pallav    schedule 17.03.2015    source источник
comment
Гнездо D3, вероятно, путь сюда   -  person Code Whisperer    schedule 17.03.2015


Ответы (2)


Возможно, это не тот ответ, которого вы ожидали, но я не думаю, что это возможно с JsonPath.

Цитата из jayway/JsonPath

При оценке пути вам необходимо понимать концепцию того, когда путь определен. Путь является неопределенным, если он содержит:

  • .. - оператор глубокого сканирования
  • ?() - выражение
  • [, (, )] - несколько индексов массива

Неопределенные пути всегда возвращают список (представленный текущим JsonProvider).

Таким образом, ваш результат всегда будет списком. Я думаю, что то, что у вас уже есть, это самое близкое, что вы можете получить.

person stefankmitph    schedule 17.03.2015

Это невозможно сделать с помощью JSONPath.

person kalle    schedule 20.03.2015