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

【Java入門】Flexjsonでオブジェクト配列をJSONにシリアライズする方法

Flexjsonは、JavaオブジェクトをJSON形式へシリアライズ(直列化)・デシリアライズ(非直列化)するための軽量ライブラリです。オブジェクトの配列をシリアライズしたい場合も、JSONSerializerクラスが提供するserialize()メソッドを使うだけで簡単に実現できます。このメソッドは、対象インスタンスに対して浅い(shallow)シリアライズを実行します。

serialize()メソッドの構文

public String serialize(Object target)

引数として渡したオブジェクト(ここでは配列)をJSON文字列に変換し、その結果をString型として返します。

サンプルプログラム

以下の例では、Studentオブジェクトを3つ生成して配列に格納し、それをJSON形式にシリアライズしています。prettyPrint(true)を指定することで、インデント付きの整形された読みやすいJSONが出力されます。

import flexjson.JSONSerializer;

public class JsonSerializeArrayTest {
    public static void main(String[] args) {
        JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
        Student stud1 = new Student("Adithya", "Sai", 28, "Hyderabad");
        Student stud2 = new Student("Jai", "Dev", 30, "Chennai");
        Student stud3 = new Student("Ravi", "Chandra", 35, "Pune");

        Student[] students = {stud1, stud2, stud3};
        String jsonStr = serializer.serialize(students);
        System.out.println(jsonStr);
    }
}

// Studentクラス
class Student {
    private String firstName;
    private String lastName;
    private int age;
    private String address;

    public Student() {}

    public Student(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;
    }

    @Override
    public String toString() {
        return "Student[ " +
               "firstName = " + firstName +
               ", lastName = " + lastName +
               ", age = " + age +
               ", address = " + address +
               " ]";
    }
}

実行結果

プログラムを実行すると、配列内の各Studentオブジェクトが個別のJSONオブジェクトとして出力されます。

[
  {
    "address": "Hyderabad",
    "age": 28,
    "class": "Student",
    "firstName": "Adithya",
    "lastName": "Sai"
  },
  {
    "address": "Chennai",
    "age": 30,
    "class": "Student",
    "firstName": "Jai",
    "lastName": "Dev"
  },
  {
    "address": "Pune",
    "age": 35,
    "class": "Student",
    "firstName": "Ravi",
    "lastName": "Chandra"
  }
]

ポイント解説

  • prettyPrint(true):指定しない場合、JSONは1行で圧縮されて出力されます。デバッグや確認作業の際にはtrueを指定すると可読性が大きく向上します。
  • "class"フィールド:Flexjsonはデフォルトでオブジェクトのクラス名を"class"プロパティとして出力に含めます。不要な場合はexclude("*.class")をチェーンして除外できます。
  • 浅いシリアライズserialize()はネストしたオブジェクトへの参照のみを出力します。関連オブジェクトの中身まで完全に出力したい場合は、deepSerialize()メソッドを使用してください。
  1. JavaのJWindowを使ってスプラッシュ画面を実装する方法

    JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ

  2. JavaでJSON配列を作成する方法をわかりやすく解説

    JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x