Как обрабатывать JSON с пространствами имен с помощью JsonPath

У меня возникли проблемы с использованием JsonPath для проверки json с пространствами имен перед полями. Я не смог ничего найти в Google или просмотреть существующие проблемы или документацию. Я не смог заставить ничего работать. У меня есть следующий фрагмент json:

{
  "_embedded" : {
    "bb:list" : [ {
      "id" : "id",
      "label" : "label",
      "description" : "description",
      "timezone" : "timezone",
      "postalAddress" : {
        "addressCountry" : "country",
        "addressLocality" : "city",
        "addressRegion" : "state",
        "postalCode" : "postal code",
        "streetAddress" : "street address"
      }
    } ]
  }
}

И я пытаюсь проверить поле bb:list, чтобы увидеть, сколько в нем элементов. Это выражение JsonPath не работает:

"$._embedded.bb: список"

Если я удалю "bb:", то с помощью этого сработает "$._embedded.list", так что это bb: ему не нравится.


person Kevin M    schedule 02.12.2016    source источник


Ответы (1)


Итак, проблема, с которой я столкнулся, была не в выражении JsonPath или JsonPath вообще. Spring Boot вводил JsonPath, поэтому все скомпилировалось и выглядело нормально, но во время выполнения по какой-то причине это просто не работало. Я явно добавил JsonPath в свой список зависимостей, и он волшебным образом заработал.

РЕДАКТИРОВАТЬ: Таким образом, указанное выше исправление не было постоянным. Оказывается, временная зависимость JsonPath - Json-smart использует более новую версию, чем версия, которую извлекает Spring-test (несколько ее временных зависимостей). Я исправил это, добавив исключение для json-smart из зависимости spring-starter-test:

testCompile('org.springframework.boot:spring-boot-starter-test'){
    exclude group: 'json-smart'
}
person Kevin M    schedule 07.12.2016