Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJsonPointerインターフェースを使用してJSONのキーの値を取得する方法

JSONPointerは、JSONドキュメント内の特定のキーの値へアクセスするための文字列構文を定義した標準規格です。Jsonクラスの静的ファクトリメソッドであるcreatePointer()を呼び出すことで、JSONPointerのインスタンスを生成できます。JSONPointerでは、すべての文字列構文がスラッシュ「/」で始まるのが特徴です。キーの値を取得するには、JSONPointerオブジェクトに対してgetValue()メソッドを呼び出します。

前提条件

この記事のコードを実行するには、Java EE / Jakarta EEに含まれるJSON Processing(JSON-P)のAPIが必要です。Mavenプロジェクトの場合は、pom.xmlに以下の依存関係を追加してください。

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1.4</version>
</dependency>

使用するJSONファイル

今回の例では、次のような「simple.json」ファイルを使用します。

JavaでJsonPointerインターフェースを使用してJSONのキーの値を取得する方法

{
  "firstName": "Raja",
  "lastName": "Ramesh",
  "age": 30,
  "streetAddress": "Madhapur",
  "city": "Hyderabad",
  "state": "Telangana",
  "phoneNumbers": [
    { "Mobile": "9959984000" },
    { "Home": "0403758000" }
  ]
}

コード例

import javax.json.*;
import java.io.*;

public class JsonPointerTest {
    public static void main(String[] args) throws Exception {
        JsonReader jsonReader = Json.createReader(new FileReader("simple.json"));
        JsonStructure jsonStructure = jsonReader.read();

        // 単一のキーの値を取得
        JsonPointer jsonPointer1 = Json.createPointer("/firstName");
        JsonString jsonString = (JsonString) jsonPointer1.getValue(jsonStructure);
        System.out.println("First Name: " + jsonString.getString());

        // 配列全体を取得
        JsonPointer jsonPointer2 = Json.createPointer("/phoneNumbers");
        JsonArray array = (JsonArray) jsonPointer2.getValue(jsonStructure);
        System.out.println("Phone Numbers:");
        for (JsonValue value : array) {
            JsonObject objValue = (JsonObject) value;
            System.out.println(objValue.toString());
        }

        // 配列の要素をインデックスで取得
        JsonPointer jsonPointer3 = Json.createPointer("/phoneNumbers/1");
        JsonObject jsonObject1 = (JsonObject) jsonPointer3.getValue(jsonStructure);
        System.out.println("Home: " + jsonObject1.toString());

        // 空のポインタでドキュメント全体を取得
        JsonPointer jsonPointer4 = Json.createPointer("");
        JsonObject jsonObject2 = (JsonObject) jsonPointer4.getValue(jsonStructure);
        System.out.println("JSON:\n" + jsonObject2.toString());

        jsonReader.close();
    }
}

実行結果

First Name: Raja
Phone Numbers:
{"Mobile":"9959984000"}
{"Home":"0403758000"}
Home: {"Home":"0403758000"}
JSON:
{"firstName":"Raja","lastName":"Ramesh","age":30,"streetAddress":"Madhapur","city":"Hyderabad","state":"Telangana","phoneNumbers":[{"Mobile":"9959984000"},{"Home":"0403758000"}]}

ポイント解説

  • ポインタの作成:Json.createPointer("/firstName")のように、先頭に「/」を付けたパス形式の文字列を指定してJSONPointerを生成します。
  • 配列要素へのアクセス:「/phoneNumbers/1」のように、配列名の後に0始まりのインデックスを指定することで、特定の要素を直接取得できます。
  • ドキュメント全体の取得:createPointer("")のように空文字列を渡すと、ルート(JSONドキュメント全体)を参照できます。
  • 例外への注意:存在しないパスを指定するとJsonExceptionがスローされるため、実際のアプリケーションでは適切な例外処理を組み合わせることをおすすめします。
  1. OpenCVのJavaライブラリで画像のキーポイント(特徴点)を検出する方法

    OpenCVのorg.opencv.features2d.Feature2D(抽象クラス)が提供するdetect()メソッドを使用すると、指定した画像からキーポイント(特徴点)を検出できます。このメソッドを呼び出す際は、元画像を表すMatオブジェクトと、検出結果を格納するための空のMatOfKeyPointオブジェクトを引数として渡します。 また、検出されたキーポイントを画像上に描画したい場合は、org.opencv.features2d.Features2dクラスのdrawKeypoints()メソッドを利用します。 注意点 Feature2Dは抽象クラスであるため、detect()メソ

  2. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを