2016-12-02 5 views
0

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

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" 
     } 
    } ] 
    } 
} 

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

«$ ._ embedded.bb:list»

Если удалить «ББ:» затем, используя это работает «$ ._ embedded.list», так это бб: что это не похоже.

ответ

0

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

EDIT: Таким образом, вышеупомянутое исправление не было постоянным. Оказывается, что переходная зависимость JsonPath-Json-smart использует более новую версию, чем версия, которую втягивает Spring-тест (по некоторым из его временных зависимостей). Я исправил это, добавив исключение для json-smart из зависимости от пружинного теста:

testCompile('org.springframework.boot:spring-boot-starter-test'){ 
    exclude group: 'json-smart' 
}