JSONPath Expression с глубоким фильтром

Учитывая следующий массив JSON

[
 {
  "id":1, 
  "list":[
    {"id":1,"type":{"ref":1,"tema":3}},
    {"id":2,"type":{"ref":1,"tema":6}}
  ]
 },...
]

Как с помощью выражения jsonPath получить все элементы списка с type.ref == 1? Я не смог найти фильтр с 2 уровнями во всех примерах, которые я нашел с помощью Google.


person J.M. Kenny    schedule 26.02.2015    source источник
comment
какой язык программирования? с #, java, турбо паскаль?   -  person stefankmitph    schedule 26.02.2015
comment
Извините, я редактировал вопрос. Я ищу выражение jsonPath   -  person J.M. Kenny    schedule 26.02.2015


Ответы (1)


я думаю это

$..list[?(@.type.ref == 1)]

или это

$..list..type[?(@.ref == 1)]

стоит сделать.

person stefankmitph    schedule 26.02.2015
comment
Это кажется логичным, и я пробовал это раньше, но это не работает. Похоже, использование более одного уровня после @ не работает. - person J.M. Kenny; 26.02.2015
comment
в какой среде (или оценщиком) вы его тестировали? - person stefankmitph; 26.02.2015
comment
Я использую Spring Web MVC 3.2.3 и Jayway JSONPath 0.8.1 - person J.M. Kenny; 02.03.2015
comment
я оценил $..list..type[?(@.ref == 1)], и он оценивается правильно здесь и там. но не работает здесь. - person stefankmitph; 02.03.2015
comment
Ваша первая ссылка использует Jayway 1.2, последняя - версии до 0.8.3, а я - 0.8.1. Постараюсь обновить свою версию. - person J.M. Kenny; 02.03.2015
comment
я не смог найти онлайн-инструмент оценки jsonpath (кроме curiousconcept.com ... но я думаю, что есть ошибка ...), который использует v0.8.1. - person stefankmitph; 02.03.2015
comment
Что ж ... Я не могу обновить свою версию json-path без обновления версии зависимости spring-test ... Но ваш второй фильтр работает с последней версией json-path. Спасибо! - person J.M. Kenny; 03.03.2015