ホームページ >Java >&#&チュートリアル >Java の Jackson for JSON を詳しく見る: JsonNode、ArrayNode、ObjectMapper について理解する

Java の Jackson for JSON を詳しく見る: JsonNode、ArrayNode、ObjectMapper について理解する

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-22 22:25:03830ブラウズ

Dive into Jackson for JSON in Java: Understanding JsonNode, ArrayNode, and ObjectMapper

Java 開発者の皆さん! ?

JSON データを見つめながら、「いったいこれを Java でどのように操作すればよいのだろう?」と考えたことはありませんか?心配しないでください - あなたは一人ではありません! API を構築する場合でも、API を使用する場合でも、あるいは単にデータを処理する場合でも、JSON を扱うことはほぼ避けられません。しかし、良いニュースがあります:ジャクソンはあなたの味方です!

この記事では、JsonNode、ArrayNode、ObjectMapper などの Jackson の基本について説明します。簡単なコード例と出力を使用して、物事がどのように機能するかを正確に示して、シンプルにしていきます。

いいですね?飛び込んでみましょう! ?

Spring Boot プロジェクトでの Jackson のセットアップ

例に入る前に、Spring Boot プロジェクトで Jackson をセットアップする方法を簡単に説明しましょう。良いニュース: Spring Boot には Jackson が組み込まれているため、最小限のセットアップが必要です。 ?

新しい Spring Boot プロジェクトを作成すると、Jackson がシリアル化および逆シリアル化用のデフォルトの JSON ライブラリとして提供されます。 Jackson を明示的に追加する場合は、pom.xml に次の依存関係があることを確認してください:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.18.0</version> <!-- You can use the latest version -->
</dependency>

これにより、JSON 処理のための ObjectMapper を含む Jackson のコア機能が追加されます。

ボーナス: Spring Boot 構成
Spring Boot は、Jackson のすぐに使用できるセットアップを提供しますが、application.properties または application.yml ファイルを使用してカスタマイズすることもできます。

たとえば、JSON の整形印刷を構成するには、次を追加できます。

spring.jackson.serialization.indent_output=true

または application.yml:

spring:
  jackson:
    serialization:
      indent_output: true

これで、Spring Boot アプリが JSON をシリアル化するたびに、適切にフォーマットされるようになります。

このセットアップが完了すると、Jackson を使用して Spring Boot アプリで JSON を操作する準備が整います。

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

Jackson は、Java で JSON を操作するためのスイスアーミーナイフのようなものです。次の目的で使用できます:

  • 1. Java オブジェクトを JSON に変換します (シリアル化)。
  • 2. JSON を Java オブジェクトに変換します (逆シリアル化)。
  • 3. JsonNode を使用して JSON をツリー状の構造で扱います。

今日はこれらの機能のいくつかを検討するので、JSON 処理の恐怖を軽減する準備をしてください!

JsonNode: JSON への最初のステップ

JsonNode は、JSON データを探索して操作できる魔法のキーと考えてください。これは、Java で JSON 構造のさまざまな部分を表す方法です。

次の単純な JSON データがあると想像してください:

{
  "name": "Samarth",
  "age": 30,
  "city": "New York"
}

これを Java でどう読むのですか?見てみましょう!

コードは次のとおりです:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonNodeExample {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\"name\":\"Samarth\", \"age\":30, \"city\":\"New York\"}";

        // Step 1: Create an ObjectMapper
        ObjectMapper objectMapper = new ObjectMapper();

        // Step 2: Parse the JSON string into a JsonNode
        JsonNode jsonNode = objectMapper.readTree(jsonString);

        // Step 3: Access values from the JsonNode
        System.out.println("Name: " + jsonNode.get("name").asText());
        System.out.println("Age: " + jsonNode.get("age").asInt());
        System.out.println("City: " + jsonNode.get("city").asText());
    }
}

そして出力:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.18.0</version> <!-- You can use the latest version -->
</dependency>

ここで何が起こっているのでしょうか?

  1. ObjectMapper は、Jackson の主なヘルパーです。これは、JSON と Java の間で変換を行うものです。
  2. readTree() は JSON を読み取り、JsonNode オブジェクトに変換します。
  3. .get() を使用して、JSON から個々のフィールド「名前」、「年齢」、「都市」にアクセスします。

かなりクールですね?これで、Java で JSON を操作することがいかに簡単であるかがわかり始めました!

ArrayNode: JSON 配列の処理

しかし、JSON が配列の場合はどうなるでしょうか?心配しないでください、ジャクソンはそれもカバーしています!次の JSON 配列があるとします:

spring.jackson.serialization.indent_output=true

ArrayNode を使用して、このオブジェクトの配列を読み取り、操作できます。

コードは次のとおりです:

spring:
  jackson:
    serialization:
      indent_output: true

そして出力:

{
  "name": "Samarth",
  "age": 30,
  "city": "New York"
}

ここで何が起こっているのでしょうか?

  1. **ArrayNode **は、JSON オブジェクトの配列を表す **JsonNode **の特別なタイプです。
  2. 配列内の各要素をループし、各人の「名前」を出力します。

簡単ですね? ArrayNode を使用すると、Jackson は JSON 配列の処理を簡単にします!

ObjectMapper: ジャクソンの心臓部

さて、ジャクソンの心と魂である ObjectMapper について話しましょう。これは、Java オブジェクトを JSON に、またはその逆に変換するための頼りになるツールです。

Java オブジェクトを JSON にシリアル化する
シリアル化は、「Java オブジェクトを JSON 文字列に変換する」という派手な方法にすぎません。単純な Personclass があるとします。

コード:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonNodeExample {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\"name\":\"Samarth\", \"age\":30, \"city\":\"New York\"}";

        // Step 1: Create an ObjectMapper
        ObjectMapper objectMapper = new ObjectMapper();

        // Step 2: Parse the JSON string into a JsonNode
        JsonNode jsonNode = objectMapper.readTree(jsonString);

        // Step 3: Access values from the JsonNode
        System.out.println("Name: " + jsonNode.get("name").asText());
        System.out.println("Age: " + jsonNode.get("age").asInt());
        System.out.println("City: " + jsonNode.get("city").asText());
    }
}

出力:

Name: Samarth  
Age: 30  
City: New York

ここで何が起こっているのでしょうか?

  1. **ObjectMapper **は personobject を取得し、writeValueAsString() を使用して JSON 文字列に変換します。
  2. メソッド writeValueAsString() は、Java オブジェクトの JSON 表現を作成します。
  3. 結果は、API に送信したり、データベースに保存したりできる有効な JSON 文字列です。

JSON を Java オブジェクトに逆シリアル化する

その逆も同様です! JSON を取得して Java オブジェクトに戻すことができます。これは逆シリアル化と呼ばれます。

コードは次のとおりです。

[
  {"name": "Samarth"},
  {"name": "Ujjwal"},
  {"name": "Gaurav"}
]

そして出力:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;

public class ArrayNodeExample {
    public static void main(String[] args) throws Exception {
        String jsonArrayString = "[{\"name\":\"Samarth\"}, {\"name\":\"Ujjwal\"}, {\"name\":\"Gaurav\"}]";

        // Step 1: Create an ObjectMapper
        ObjectMapper objectMapper = new ObjectMapper();

        // Step 2: Parse the JSON array into an ArrayNode
        ArrayNode arrayNode = (ArrayNode) objectMapper.readTree(jsonArrayString);

        // Step 3: Loop through each element in the array
        for (JsonNode jsonNode : arrayNode) {
            System.out.println("Name: " + jsonNode.get("name").asText());
        }
    }
}

ここで何が起こっているのでしょうか?

**ObjectMapper ** を再度使用しますが、今回は JSON 文字列を読み取り、それを Person オブジェクトに変換し直します。
これは readValue() を使用して行われ、その結果、コードですぐに使用できる完全な Java オブジェクトが生成されます。

まとめ

そして、これで完成です!私たちは多くのことをカバーしてきました:

  • JsonNode: JSON データを読み取り、操作する方法。
  • ArrayNode: JSON 配列の処理方法。
  • ObjectMapper: Java オブジェクトを JSON との間でシリアル化および逆シリアル化する方法。

このガイドによって、Jackson の怖れが少しなくなり、もっと楽しく使えるようになることを願っています。コツを掴めば、すぐにプロのように JSON を扱えるようになります。

でも、ここでやめないでください!次回の記事では、より高度な Jackson 機能と実際のアプリケーションのベスト プラクティスについて詳しく説明します。

また会いましょう!コーディングを楽しんでください! ?

以上がJava の Jackson for JSON を詳しく見る: JsonNode、ArrayNode、ObjectMapper について理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。