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

JavaでFlexjsonを使ってオブジェクトのリストをJSONにシリアライズする方法

Flexjsonは、JavaオブジェクトをJSON形式にシリアライズ(直列化)・デシリアライズ(復元)するための軽量なライブラリです。この記事では、オブジェクトのリストをJSONに変換する方法を解説します。

serialize()メソッドによるリストのシリアライズ

JSONSerializerクラスが提供するserialize()メソッドを使うと、対象インスタンスのシャロー(浅い)シリアライズを実行できます。オブジェクトのリストを変換するには、List型のリストを引数としてserialize()メソッドに渡すだけです。

構文

public String serialize(Object target)

戻り値はString型で、シリアライズされたJSON文字列が返されます。また、prettyPrint(true)を設定すると、インデント付きの整形されたJSONが出力され、可読性が向上します。

実装例

以下は、Studentクラスのインスタンスを3つ作成し、それらをListに格納してJSONに変換するサンプルコードです。

import flexjson.JSONSerializer;
import java.util.*;

public class JsonSerializeListTest {
    public static void main(String[] args) {
        // 整形されたJSONを出力する設定
        JSONSerializer serializer = new JSONSerializer().prettyPrint(true);

        Student s1 = new Student("Raja", "Ramesh", 28, "Hyderabad");
        Student s2 = new Student("Suresh", "Kumar", 30, "Chennai");
        Student s3 = new Student("Surya", "Krishna", 35, "Pune");

        List<Student> students = Arrays.asList(s1, s2, s3);
        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として出力されます。Flexjsonは自動的にgetterメソッドからプロパティ名を取得し、フィールドごとにJSONキーを生成します。

[
  {
    "address": "Hyderabad",
    "age": 28,
    "class": "Student",
    "firstName": "Raja",
    "lastName": "Ramesh"
  },
  {
    "address": "Chennai",
    "age": 30,
    "class": "Student",
    "firstName": "Suresh",
    "lastName": "Kumar"
  },
  {
    "address": "Pune",
    "age": 35,
    "class": "Student",
    "firstName": "Surya",
    "lastName": "Krishna"
  }
]

ポイントまとめ

  • Flexjsonの依存関係をプロジェクトに追加することで利用可能になります。
  • リスト全体を1回のserialize()呼び出しでJSON配列に変換できます。
  • prettyPrint(true)を指定すると、人間が読みやすい整形済みJSONが得られます。
  • デフォルトではシャローなシリアライズが行われるため、ネストしたオブジェクトまで含めたい場合はinclude()メソッドを使用します。
  1. 【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)

    JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず

  2. JavaのJWindowを使ってスプラッシュ画面を実装する方法

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