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

JavaのFlexjsonでJSONをラップする方法:rootName()メソッドの使い方を解説

Flexjsonは、Java Beans、Map、配列、コレクションなどのJavaオブジェクトをJSON形式でシリアライズ・デシリアライズするための軽量なJavaライブラリです。JSONへの変換を行う中心となるのがJSONSerializerクラスで、デフォルトではオブジェクトの直下のフィールドのみを対象とする浅い(shallow)シリアライズを実行します。

本記事では、生成されるJSONを任意の名前でラップ(包む)できるrootName()メソッドの使い方を、サンプルコードとともに解説します。

rootName()メソッドとは?

JSONSerializerクラスが提供するrootName()メソッドを使うと、シリアライズ結果のJSONをJavaScriptオブジェクト形式でラップできます。具体的には、指定した名前を持つ単一のフィールドの中に出力結果が格納された構造になります。

APIレスポンスにルート要素を持たせたい場合や、複数種類のデータを区別しやすいJSONを生成したい場合に便利です。

構文

public JSONSerializer rootName(String rootName)

引数にはラップ時に使用するルート名を文字列で指定します。戻り値はJSONSerializer自身なので、メソッドチェーンで他の設定と組み合わせることも可能です。

使用例

以下は、rootName()メソッドを使って「My_Employee」というルート名でJSONをラップする例です。あわせてprettyPrint(true)を指定することで、整形された読みやすいJSONが出力されます。

import flexjson.JSONSerializer;

public class JSONRootNameTest {
    public static void main(String[] args) {
        // ルート名を指定し、整形出力を有効化
        JSONSerializer serializer = new JSONSerializer().rootName("My_Employee").prettyPrint(true);
        Employee emp = new Employee("Adithya", "Jai", 28, "Hyderabad");
        String jsonStr = serializer.serialize(emp);
        System.out.println(jsonStr);
    }
}

// 従業員クラス
class Employee {
    private String firstName;
    private String lastName;
    private int age;
    private String address;

    public Employee() {}

    public Employee(String firstName, String lastName, int age, String address) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
        this.address = address;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }
}

実行結果

{
  "My_Employee": {
    "address": "Hyderabad",
    "age": 28,
    "class": "Employee",
    "firstName": "Adithya",
    "lastName": "Jai"
  }
}

出力のポイント

  • JSON全体が"My_Employee"というキーでラップされ、その中にEmployeeオブジェクトの各フィールドが格納されています。
  • Flexjsonはデフォルトで"class"フィールドを出力に含めます。不要な場合はexclude("class")を組み合わせて除外できます。
  • prettyPrint(true)によりインデント付きの整形済みJSONが得られ、デバッグやログ出力の際に可読性が向上します。

このように、rootName()メソッドを活用すれば、柔軟かつ簡潔にJSONの構造を制御できます。REST APIのレスポンス設計などで、ルート要素付きのJSONが必要な場面でぜひ活用してみてください。

  1. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを

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

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