Compter avec JsonPath

1. Vue d’ensemble

Dans ce rapide tutoriel, nous allons explorer comment utiliser JsonPath pour compter les objets et les tableaux dans un document JSON.

JsonPath fournit un mécanisme standard pour parcourir des parties spécifiques d’un document JSON. Nous pouvons dire que JsonPath est pour JSON ce que XPath est pour XML.

2. Dépendances requises

Nous utilisons la dépendance suivante Maven JsonPath , qui est bien sûr disponible sur https://search.maven.org/classic/#search%7Cga% 7C1% 7Cg% 3A% 22com.jayway.jsonpath% 22[Maven Central]:

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

3. Exemple de code JSON

Le JSON suivant sera utilisé pour illustrer les exemples:

{
    "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":"baeldung"
}

4. Compter les objets JSON

L’élément racine est désigné par le symbole du dollar “ $” . Dans le test JUnit suivant, nous appelons JsonPath.read () avec le JSON String et le chemin JSON «$» que nous voulons compter:

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

En comptant la taille de la Map résultante, , nous savons combien d’éléments se trouvent sur le chemin donné dans la structure JSON.

5. Compter la taille du tableau JSON

Dans le test JUnit suivant, nous interrogeons JSON pour rechercher le tableau contenant tous les books sous l’élément items :

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

6. Conclusion

Dans cet article, nous avons présenté quelques exemples de base sur la manière de compter les éléments dans une structure JSON.

Vous pouvez explorer d’autres exemples de chemins dans la official JsonPath docs .

Comme toujours, les exemples de code sont disponibles sur the GitHub https://github.com/eugenp/tutorials/tree/master/json -path[référentiel].