Flexjsonを使ってJSONをJavaの既存オブジェクトにデシリアライズする方法
Flexjsonは、JavaBeans、Map、配列、コレクションなどのJavaオブジェクトをJSON形式でシリアライズ・デシリアライズするための軽量なJavaライブラリです。このライブラリでは、JSONDeserializerクラスが提供するdeserializeInto()メソッドを使用することで、JSON文字列を既存のオブジェクトにデシリアライズできます。
deserializeInto()メソッドは、渡されたJSON入力を既存のターゲットオブジェクトに展開します。このとき、JSON入力に含まれる値は、ターゲットオブジェクトの対応するフィールドの値を上書きします。つまり、JSONに特定の値が含まれている場合、その値に基づいて新しいオブジェクトが生成され、既存のオブジェクトに設定されるという仕組みです。
構文
public T deserializeInto(String input, T target)
コード例
import flexjson.JSONDeserializer;
public class JsonDeserializeTest {
public static void main(String[] args) {
Employee emp = new Employee("Adithya", "Ram", 25, 35000.00);
System.out.println(emp);
JSONDeserializer<Employee> deserializer = new JSONDeserializer<Employee>();
String jsonStr =
"{" +
"\"age\": 30," +
"\"salary\": 45000.00" +
"}";
emp = deserializer.deserializeInto(jsonStr, emp);
System.out.println(emp);
}
}
// Employeeクラス
class Employee {
private String firstName;
private String lastName;
private int age;
private double salary;
public Employee() {}
public Employee(String firstName, String lastName, int age, double salary) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.salary = salary;
}
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String toString() {
return "Employee[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", salary = " + salary +
" ]";
}
}
実行結果
Employee[ firstName = Adithya, lastName = Ram, age = 25, salary = 35000.0 ] Employee[ firstName = Adithya, lastName = Ram, age = 30, salary = 45000.0 ]
実行結果から、JSON文字列に含まれていた「age」と「salary」の値のみが更新され(25 → 30、35000.0 → 45000.0)、JSONに含まれていなかった「firstName」と「lastName」は元の値(Adithya、Ram)のまま保持されていることがわかります。このように、deserializeInto()メソッドを活用すれば、オブジェクトを新しく作り直すことなく、必要なフィールドだけを効率的に部分更新できるのが大きなメリットです。
-
Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】
GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。 処理の流れ 基本的な手順は以下のとおりです。 JSONファイルを読み込み、Javaオブジェクトとしてパースします。 JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。 JSON配列を反復処理しながら、各JsonElementを出力します。 JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込
-
JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説
このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ