ホームページ > Java > &#&チュートリアル > Jackson を使用して Java API 開発で JSON データを処理する

Jackson を使用して Java API 開発で JSON データを処理する

WBOY
リリース: 2023-06-19 09:10:02
オリジナル
1601 人が閲覧しました

インターネット技術の発展に伴い、Web アプリケーションはますます複雑になり、多くのアプリケーションでは JSON 形式でのデータ交換が必要になります。 Java 開発では、JSON データを処理する一般的な方法は、Jackson ライブラリを使用することです。この記事では、Jackson ライブラリを使用して JSON データを処理するプロセスを紹介します。

ジャクソンとは何ですか?

Jackson は、JSON 形式のデータを処理するための Java ライブラリです。これは、Java オブジェクトを JSON 形式にシリアル化し、JSON データを Java オブジェクトに逆シリアル化する簡単な方法を提供します。また、JSON データ ストリームから Java オブジェクトへのマッピング、および Java オブジェクトから JSON データ ストリームへのマッピングもサポートします。

Jackson ライブラリを使用して Java オブジェクトを JSON にシリアル化する

まず、Java オブジェクトを作成し、アノテーションを使用してフィールドの名前を定義する必要があります。たとえば、次のような名前の Java オブジェクトを作成しました。

class Person {
    @JsonProperty("name")
    private String mName;

    @JsonProperty("age")
    private int mAge;

    public Person(String name, int age) {
        mName = name;
        mAge = age;
    }

    // 省略 Getter 和 Setter 方法
}
ログイン後にコピー

上記のコードでは、@JsonProperty アノテーションを使用して「name」フィールドと「age」フィールドの JSON 名を定義しました。次に、ObjectMapper クラスを使用して、Java オブジェクトを JSON 形式にシリアル化できます。

ObjectMapper mapper = new ObjectMapper();
Person person = new Person("John Smith", 30);
String jsonString = mapper.writeValueAsString(person);
ログイン後にコピー

上記のコードでは、ObjectMapper オブジェクトを作成し、Person オブジェクトを JSON 形式の文字列に変換します。出力は次のようになります。

{"name":"John Smith","age":30}
ログイン後にコピー
ログイン後にコピー

オンデマンドでフィールドのシリアル化をサポート

Jackson ライブラリは、@JsonView アノテーションを介してフィールドをビューにグループ化することもサポートしています。これにより、各ビューに 1 セットのフィールドのみを表示できます。以下に例を示します。

class Views {
    static class Public {}
    static class Internal extends Public {}
}

class Person {
    @JsonProperty("name")
    @JsonView(Views.Public.class)
    private String mName;

    @JsonProperty("age")
    @JsonView(Views.Internal.class)
    private int mAge;

    public Person(String name, int age) {
        mName = name;
        mAge = age;
    }

    // 省略 Getter 和 Setter 方法
}
ログイン後にコピー

上記のコードでは、最初に Public と Internal という 2 つのビューを定義します。人物オブジェクトの「名前」フィールドはパブリック ビューに関連付けられ、「年齢」フィールドは内部ビューに関連付けられます。次に、ObjectMapper クラスを使用して、特定のビューを含む Java オブジェクトを JSON 形式にシリアル化します。

ObjectMapper mapper = new ObjectMapper();
Person person = new Person("John Smith", 30);
String jsonStringPublic = mapper.writerWithView(Views.Public.class).writeValueAsString(person);
String jsonStringInternal = mapper.writerWithView(Views.Internal.class).writeValueAsString(person);
ログイン後にコピー

上記のコードでは、Person オブジェクトをパブリック ビューと内部ビューの文字列を含む JSON 形式にシリアル化します。出力は次のようになります。

パブリック ビュー:

{"name":"John Smith"}
ログイン後にコピー

内部ビュー:

{"name":"John Smith","age":30}
ログイン後にコピー
ログイン後にコピー

Jackson ライブラリを使用して JSON データを Java オブジェクトに逆シリアル化する

JSON データを Java オブジェクトに逆シリアル化するには、まず Java オブジェクトを作成し、次に ObjectMapper クラスを使用して JSON データ ストリームをオブジェクトにマップする必要があります。

ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(jsonString, Person.class);
ログイン後にコピー

上記のコードでは、 ObjectMapper オブジェクトを取得し、JSON データを Person オブジェクトに変換します。 JSON 文字列は Person オブジェクトのフィールド名と一致する必要があることに注意してください。一致しない場合は例外がスローされます。

Jackson ライブラリを使用して JSON データ ストリームを処理する

Jackson は、大きな JSON ファイルを 1 行ずつ処理するために、JSON データ ストリームを Java オブジェクトにマッピングすることもサポートしています。以下は例です:

ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getFactory();
JsonParser parser = factory.createParser(new File("testdata.json"));

while (parser.nextToken() != null) {
    if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
        Person person = mapper.readValue(parser, Person.class);
        // 处理Person对象
    }
}
ログイン後にコピー

上記のコードでは、まず ObjectMapper オブジェクトと JsonFactory オブジェクトを作成します。次に、JsonFactory オブジェクトを使用して JsonParser オブジェクトを作成します。このオブジェクトは、JSON ファイルのデータ ストリームを 1 行ずつ読み取る役割を果たします。次に、ObjectMapper.readValue() メソッドを使用して、現在の行の JSON データ ストリームを Person オブジェクトにマップします。

概要

Jackson ライブラリを使用して JSON データを処理することは、非常に便利な方法です。 Jackson は、Java オブジェクトを JSON 形式にシリアル化し、JSON データを Java オブジェクトに逆シリアル化し、JSON データ ストリームを Java オブジェクトにマッピングできるようにする多くのオプションと構成を提供します。これにより、JSON データの処理が非常に簡単になります。

以上がJackson を使用して Java API 開発で JSON データを処理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート