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 .