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

JavaのGsonにおけるfromJson()メソッドとtoJson()メソッドの違いとは?

Gsonは、Googleが提供するJava向けのJSON処理ライブラリです。JavaオブジェクトとJSONデータを相互に変換できるため、Web APIとの連携や設定ファイルの読み書きなど、幅広い場面で活用されています。

Gsonには代表的な2つのメソッドがあります。fromJson()メソッドはJSON文字列をJavaオブジェクトに変換(デシリアライズ)するためのもので、toJson()メソッドはJavaオブジェクトをJSON文字列に変換(シリアライズ)するためのものです。

fromJson()メソッドは2つの引数を受け取ります。第1引数は解析したいJSON文字列、第2引数はJSON文字列をマッピングする先のJavaクラスです。一方、toJson()メソッドの引数は1つだけで、JSON文字列に変換したいJavaオブジェクトを渡します。

fromJson()メソッドの構文

public <T> fromJson(java.lang.String json, java.lang.Class<T> classOfT) throws JsonSyntaxException

JSON文字列の形式が不正な場合は、JsonSyntaxExceptionがスローされる点にも注意してください。

fromJson()の使用例

import com.google.gson.*;
public class FromJsonMethodTest {
   public static void main(String[] args) {
      String jsonString = "{'id':101, 'firstName':'Jai','lastName':'Adithya'}";
      Gson gson = new Gson();
      Employee emp = gson.fromJson(jsonString, Employee.class);
      System.out.println(emp);
   }
}
// Employeeクラス
class Employee {
   private int id;
   private String firstName;
   private String lastName;
   public Employee() {}
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   public String getFirstName() {
      return firstName;
   }
   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }
   public String getLastName() {
      return lastName;
   }
   public void setLastName(String lastName) {
      this.lastName = lastName;
   }
   @Override
   public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("Id : " + id);
      sb.append(", FirstName : " + firstName);
      sb.append(", Last Name : " + lastName);
      return sb.toString();
   }
}

出力結果

Id : 101, FirstName : Jai, Last Name : Adithya

このように、JSON文字列をEmployee.classとして指定するだけで、各フィールドに値が自動的にマッピングされたJavaオブジェクトを取得できます。

toJson()メソッドの構文

public java.lang.String toJson(java.lang.Object src)

toJson()の使用例

import com.google.gson.*;
public class ToJsonMethodTest {
   public static void main(String[] args) {
      Employee emp = new Employee();
      emp.setId(110);
      emp.setFirstName("Raja");
      emp.setLastName("Ramesh");
      Gson gson = new Gson();
      String jsonString = gson.toJson(emp);
      System.out.println(jsonString);
   }
}
// Employeeクラス
class Employee {
   private int id;
   private String firstName;
   private String lastName;
   public Employee() {}
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   public String getFirstName() {
      return firstName;
   }
   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }
   public String getLastName() {
      return lastName;
   }
   public void setLastName(String lastName) {
      this.lastName = lastName;
   }
}

出力結果

{"id":110,"firstName":"Raja","lastName":"Ramesh"}

オブジェクトのフィールド名がそのままJSONのキーになり、値が対応する形でJSON文字列が生成されていることがわかります。

fromJson()とtoJson()の違いまとめ

  • fromJson():JSON文字列 → Javaオブジェクトへの変換(デシリアライズ)。引数は「JSON文字列」と「変換先のクラス」の2つ。
  • toJson():Javaオブジェクト → JSON文字列への変換(シリアライズ)。引数は「変換元のオブジェクト」の1つのみ。

この2つのメソッドを使い分けることで、Javaアプリケーション内でJSONデータの読み込みと生成を簡単かつ安全に行うことができます。

  1. JavaにおけるMouseListenerとMouseMotionListenerの違いを徹底解説

    Javaでマウスイベントを処理する際、マウスが静止している状態(クリックや押下など)のイベントにはMouseListenerインターフェースを実装し、マウスが動いている状態(移動やドラッグ)のイベントにはMouseMotionListenerインターフェースを実装します。両者の違いを理解しておくと、目的に応じた適切なリスナーを選択できるようになります。 MouseListenerとは MouseEventは、ソースオブジェクト上でマウスボタン(左ボタンまたは右ボタン)を押したとき、離したとき、クリックした(押してから離す一連の動作)ときに発生します。また、マウスポインタがソースオブジェク

  2. JavaのcompareTo()メソッドとcompare()メソッドの違いを徹底解説

    Javaでオブジェクトを並べ替える際に登場するのが、ComparableインターフェースのcompareTo()メソッドと、Comparatorインターフェースのcompare()メソッドです。名前はよく似ていますが、役割や使い方には明確な違いがあります。 Comparableインターフェースが提供するcompareTo()メソッドは、オブジェクトの順序付けを決めるためのもので、この順序は自然順序付け(natural ordering)、このメソッドは自然比較メソッドと呼ばれます。一方、Comparatorインターフェースが提供するcompare()メソッドはソート処理を実行するためのもので、