HOWTO · Java

Java で JSON をデシリアライズする

このチュートリアルでは、Java で JSON を逆シリアル化する方法を示します。

このチュートリアルでは、Java で JSON を逆シリアル化する方法を示します。

Java で JSON をデシリアライズする

JSON操作に使用されるさまざまなライブラリが提供されています。 これらのライブラリは、Java で JSON オブジェクトをシリアライズおよびデシリアライズすることもできます。

JSON-Java API を使用して JSON をデシリアライズする

Java で JSON オブジェクトのシリアル化と逆シリアル化を処理するライブラリ JSON-Java があります。 このライブラリは、JSON オブジェクトまたはドキュメントを Java オブジェクトに解析するか、Java クラスから JSON オブジェクト ドキュメントを生成します。

このライブラリは、Java で Gradle を使用して追加できます。 JSON-Java の Gradle 依存関係は次のとおりです。

implementation 'org.json:json:20210307'

JSON-Java にはさまざまな機能があり、他の多くの同様のライブラリよりも優れています。 主な機能は次のとおりです。

  1. 下位互換性
  2. 外部依存関係はありません。
  3. 実行速度が速く、メモリ フットプリントが小さい。
  4. 一貫した信頼できる結果
  5. JSON 仕様への準拠を提供します。
import org.json.JSONObject;

public class Example {
  public static void main(String[] args) {
    String JSON_Object = "" "
    {
      "name" : "Sheeraz Gul",
               "occupation" : "Software Engineer",
                              "salary" : "6000",
                                         "height" : "186.6",
                                                    "married" : "false"
    }
    "" ";

        var User_Info = new JSONObject(JSON_Object);

    System.out.println(User_Info.get("name"));
    System.out.println(User_Info.get("occupation"));
    System.out.println(User_Info.get("salary"));
    System.out.println(User_Info.get("height"));
    System.out.println(User_Info.get("married"));
  }
}

上記のコードは、JSON オブジェクトを Java オブジェクトにデシリアライズします。 出力を参照してください:

Sheeraz Gul
Software Engineer
6000
186.6
false

Jackson API を使用して JSON をデシリアライズする

Jackson は、Java での JSON 操作用のオープンソース ライブラリです。 このライブラリは、Java で JSON オブジェクトをシリアライズおよびデシリアライズできます。

ライブラリには、シリアル化と逆シリアル化の 2つの主要な方法があります。

  1. writeValue(...): Java オブジェクトを JSON オブジェクトに変換するために使用されます。 (連載)
  2. readValue(...): JSON オブジェクトを Java オブジェクトに変換するために使用されます。 (逆シリアル化)

Jackson は、maven プロジェクトに追加することで使用できます。 Jackson API の依存関係は次のとおりです。

<dependency>
		<groupId>org.codehaus.jackson</groupId>
		<artifactId>jackson-mapper-asl</artifactId>
		<version>1.9.13</version>
	</dependency>

この依存関係は Jackson 1.x 用です。 新しいバージョン Jackson 2.x もあります。 JSON オブジェクトを Java オブジェクトにデシリアライズする例を試してみましょう。

package delftstack;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class Example {
  public static void main(String[] args) {
    ObjectMapper Object_Mapper = new ObjectMapper();

    try {
      // JSON string from file to java Object
      User User_File = Object_Mapper.readValue(new File("G:\\delftstack.json"), User.class);
      System.out.println(User_File);

      // JSON string to java Object
      String jsonInString = "{\"name\":Sheeraz,\"salary\":\"6000\", \"company\":\"Delftstack\"}";
      User User_String = Object_Mapper.readValue(jsonInString, User.class);
      System.out.println(User_String);

    } catch (JsonGenerationException e) {
      e.printStackTrace();
    } catch (JsonMappingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記のコードは、JSON オブジェクトをファイルと文字列から Java オブジェクトにデシリアライズします。 ファイルと文字列の両方に同じ JSON オブジェクトが含まれています。

出力を参照してください:

User [name=Sheeraz, Salary=6000, Company=Delftstack]

User [name=Sheeraz, Salary=6000, Company=Delftstack]