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

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()メソッドを活用すれば、オブジェクトを新しく作り直すことなく、必要なフィールドだけを効率的に部分更新できるのが大きなメリットです。

  1. Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】

    GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。 処理の流れ 基本的な手順は以下のとおりです。 JSONファイルを読み込み、Javaオブジェクトとしてパースします。 JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。 JSON配列を反復処理しながら、各JsonElementを出力します。 JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込

  2. JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説

    このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ