1.概要

JSONは、ほとんどのクライアントサーバー通信に使用される軽量で言語に依存しないデータ交換フォーマットです。


JSONObject



JSONArray

は、ほとんどのJSON処理ライブラリで通常使用可能な2つの共通クラスです。


JSONObject

は、Javaの

Map

実装と非常によく似た、順不同のキーと値のペアを格納します。一方、

JSONArray

は、Javaの

List



Vector

とよく似た

順序付けされた値のシーケンスです。

このチュートリアルでは、


JSON-Java




org.json

)ライブラリを使用して、

JSONArray

を処理してaの値を抽出する方法を学習します。与えられたキー必要に応じて、このライブラリのhttps://www.baeldung.com/java-org-json[はじめに]を利用できます。

2. Mavenの依存関係

まず、POMに以下の依存関係を追加します。

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180813</version>
</dependency>


https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22json%で常に


JSON-Java

の最新バージョンを見つけることができます。 22[メイヴン中央]。

3.コンテキストの蓄積

JSONメッセージは通常、JSONオブジェクトと配列で構成されており、これらは互いに入れ子になっている場合があります。

JSONArray

オブジェクトは角括弧

[]

で囲みますが、

JSONObject

は中括弧

\ {}

で囲みます。たとえば、このJSONメッセージを考えてみましょう。

----[    {
        "name": "John",
        "city": "chicago",
        "age": "22"
    },
    {
        "name": "Gary",
        "city": "florida",
        "age": "35"
    },
    {
        "name": "Selena",
        "city": "vegas",
        "age": "18"
    }]----

明らかに、それはJSONオブジェクトの配列です。この配列の各JSONオブジェクトは、名前、年齢、

、および

city__を属性またはキーとして持つ顧客レコードを表します。

4.処理

JSONArray

上記のJSONを考えて、すべての顧客の名前を調べたいとしたらどうでしょうか。言い換えれば、この例では


name __というキーが与えられたとして、与えられたJSON配列の中でそのキーにマッピングされたすべての値を見つけるにはどうすればよいでしょうか。

私たちが知っているように、

JSONArray

はJSONオブジェクトのリストです。それでは、与えられたキーのすべての値を見つけましょう。

public List<String> getValuesForGivenKey(String jsonArrayStr, String key) {
    JSONArray jsonArray = new JSONArray(jsonArrayStr);
    return IntStream.range(0, jsonArray.length())
      .mapToObj(index -> ((JSONObject)jsonArray.get(index)).optString(key))
      .collect(Collectors.toList());
}

前の例では:

  • まず、JSON配列内のオブジェクトのリスト全体を反復処理します。

  • それからそれぞれの

    JSONObject

    について、与えられたキーにマッピングされた値を取得します

また、

optString()

メソッドは、そのようなキーが存在しない場合は空の文字列を返します。


getValuesForGivenKey(jsonArrayStr、“ name”)

を呼び出すと、

jsonArrayStr

はJSONの例です。出力としてすべての名前の

List

を取得します。

----[John, Gary, Selena]----

5.まとめ

この簡単な記事では、

JSONArray

を解析して、指定されたキーに対してマップされたすべての値を取得する方法を学びました。ここでは、

JSON-Java(org.json)

ライブラリを使用しました。


JSON.simple

は、JavaでJSONを操作するためのもう1つの類似した強力な代替手段です。

気軽に探索してください。

いつものように、完全なソースコードが利用可能です

Githubについて