Перейти к основному содержимому

Считать с JsonPath

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим, как использовать JsonPath для подсчета объектов и массивов в документе JSON.

JsonPath предоставляет стандартный механизм для просмотра определенных частей документа JSON. Можно сказать, что JsonPath для JSON — это то же самое, что XPath для XML.

2. Требуемые зависимости

Мы используем следующую зависимость JsonPath Maven, которая, конечно же, доступна на Maven Central :

<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>

3. Пример JSON

Для иллюстрации примеров будет использоваться следующий JSON:

{
"items":{
"book":[
{
"author":"Arthur Conan Doyle",
"title":"Sherlock Holmes",
"price":8.99
},
{
"author":"J. R. R. Tolkien",
"title":"The Lord of the Rings",
"isbn":"0-395-19395-8",
"price":22.99
}
],
"bicycle":{
"color":"red",
"price":19.95
}
},
"url":"mystore.com",
"owner":"foreach"
}

4. Подсчитайте объекты JSON

Корневой элемент обозначается символом доллара « . В следующем тесте JUnit мы вызываем JsonPath.read() со строкой JSON и путем JSON «$», который мы хотим подсчитать:

public void shouldMatchCountOfObjects() {
Map<String, String> objectMap = JsonPath.read(json, "$");
assertEquals(3, objectMap.keySet().size());
}

Подсчитав размер полученной карты, мы узнаем, сколько элементов находится на заданном пути в структуре JSON.

5. Подсчитайте размер массива JSON

В следующем тесте JUnit мы запрашиваем JSON, чтобы найти массив, содержащий все книги в элементе items :

public void shouldMatchCountOfArrays() {
JSONArray jsonArray = JsonPath.read(json, "$.items.book[*]");
assertEquals(2, jsonArray.size());
}

6. Заключение

В этой статье мы рассмотрели несколько основных примеров того, как подсчитывать элементы в структуре JSON.

Вы можете изучить больше примеров путей в официальной документации JsonPath .

Как всегда, примеры кода можно найти в репозитории GitHub .