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データの読み込みと生成を簡単かつ安全に行うことができます。
-
JavaにおけるMouseListenerとMouseMotionListenerの違いを徹底解説
Javaでマウスイベントを処理する際、マウスが静止している状態(クリックや押下など)のイベントにはMouseListenerインターフェースを実装し、マウスが動いている状態(移動やドラッグ)のイベントにはMouseMotionListenerインターフェースを実装します。両者の違いを理解しておくと、目的に応じた適切なリスナーを選択できるようになります。 MouseListenerとは MouseEventは、ソースオブジェクト上でマウスボタン(左ボタンまたは右ボタン)を押したとき、離したとき、クリックした(押してから離す一連の動作)ときに発生します。また、マウスポインタがソースオブジェク
-
JavaのcompareTo()メソッドとcompare()メソッドの違いを徹底解説
Javaでオブジェクトを並べ替える際に登場するのが、ComparableインターフェースのcompareTo()メソッドと、Comparatorインターフェースのcompare()メソッドです。名前はよく似ていますが、役割や使い方には明確な違いがあります。 Comparableインターフェースが提供するcompareTo()メソッドは、オブジェクトの順序付けを決めるためのもので、この順序は自然順序付け(natural ordering)、このメソッドは自然比較メソッドと呼ばれます。一方、Comparatorインターフェースが提供するcompare()メソッドはソート処理を実行するためのもので、