JsonPathでカウントする

1.概要

このクイックチュートリアルでは、JsonPathを使用してJSONドキュメント内のオブジェクトと配列をカウントする方法について説明します。

JsonPathは、JSONドキュメントの特定の部分を通過するための標準的なメカニズムを提供します。 JsonPathはJSONに対するものであり、XPathはXMLに対するものであると言えます。

2.必要な依存関係

我々は以下のhttps://github.com/json-path/JsonPath[JsonPath]Maven依存関係を使っています。 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.サンプル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":"baeldung"
}

4. JSONオブジェクトを数える

ルート要素はドル記号「 $」 で示されます。次のJUnitテストでは、JSON String とJSONパス“ $”を付けて JsonPath.read() を呼び出します。

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

結果の Mapのサイズを数えることで、 JSON構造内の指定されたパスにある要素の数がわかります。

5. JSON配列サイズを数える

次のJUnitテストでは、 items 要素の下にすべての books を含む配列を見つけるためにJSONを照会します。

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

6.まとめ

この記事では、JSON構造内の項目を数える方法に関するいくつかの基本的な例について説明しました。

パスの例については、https://github.com/json-path/JsonPath#path-examples[公式JsonPathのドキュメント]を参照してください。

いつものように、コード例はhttps://github.com/eugenp/tutorials/tree/master/json-path[the GitHub] https://github.com/eugenp/tutorials/tree/master/jsonにあります。 -path[リポジトリ]