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

JavaのJSON-lib APIを使ってJSON文字列をBeanに変換する方法

JSON-libは、Java Bean、Map、配列、コレクションなどをJSON形式でシリアライズ・デシリアライズするためのJavaライブラリです。JSON文字列をBeanに変換するには、まず文字列をJSONObjectに変換し、その後そのオブジェクトをJava Beanへ変換するという2段階の手順を踏みます。

構文

JSONObjectクラスが提供するtoBean()メソッドの構文は以下の通りです。

public static Object toBean(JSONObject jsonObject, Class beanClass)

サンプルプログラム

以下のプログラムでは、JSON文字列をStudentクラスのBeanに変換しています。処理の流れは次のようになります。

  • JSONSerializer.toJSON():JSON形式の文字列をJSONObjectに変換します。
  • JSONObject.toBean():JSONObjectを指定したクラス(ここではStudent.class)のBeanインスタンスに変換します。
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

public class ConvertJSONStringToBeanTest {
    public static void main(String[] args) {
        String jsonStr = "{\"firstName\": \"Adithya\", \"lastName\": \"Sai\", \"age\": 30, \"technology\": \"Java\"}";
        JSONObject jsonObj = (JSONObject)JSONSerializer.toJSON(jsonStr); // 文字列をJSONに変換
        System.out.println(jsonObj);

        Student student = (Student)JSONObject.toBean(jsonObj, Student.class); // JSONをBeanに変換
        System.out.println(student.toString());
    }

    public static class Student {
        private String firstName;
        private String lastName;
        private int age;
        private String technology;

        public Student() {
        }

        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 String getTechnology() {
            return technology;
        }

        public void setTechnology(String technology) {
            this.technology = technology;
        }

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

実行結果

{"firstName":"Adithya","lastName":"Sai","age":30,"technology":"Java"}
Student[ firstName = Adithya, lastName = Sai, age = 30, technology = Java ]

補足:JSON-libを使用するための準備

JSON-libをプロジェクトで利用するには、Mavenの場合、以下のように依存関係を追加します。JSON-libは内部でApache Commons系のライブラリに依存しているため、関連ライブラリも合わせて含まれるclassifier「jdk15」を指定するのが一般的です。

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

なお、Beanへの変換が正しく行われるためには、対象クラスが引数なしのコンストラクタと各フィールドに対応するgetter/setterを持っている必要があります。この点はJSON-libを使う上で重要なポイントなので、独自クラスを作成する際は必ず意識しておきましょう。

  1. Pythonで文字列をJSONに変換する方法|json.loads()の使い方を解説

    PythonでJSON文字列を辞書(dict)に変換する基本Pythonでは、標準ライブラリの json モジュールを使うことで、JSON形式の文字列を簡単に扱うことができます。文字列として渡されたJSONデータをPythonの辞書型に変換するには、json.loads() メソッドを使用します。json.loads() は、有効なJSON文字列を受け取り、それを解析して辞書オブジェクトを返します。返された辞書には、すべての要素にキーを使ってアクセスできます。json.loads()の使用例>>> import json >>> s = {success:

  2. JavaのMapをJSONに変換する3つの方法(Jackson・Gson・org.json)

    JavaのMap(マップ)をJSONに変換する方法はいくつかあります。Javaでは、配列やMapとJSONの相互変換を行う場面が非常に多く、Web APIとのデータ連携などでも欠かせない処理です。 この記事では、代表的なライブラリであるJackson、Gson、org.jsonを使用して、JavaのMapをJSONに変換する3つの具体例をサンプルコード付きで解説します。 Jacksonを使ってJavaのMapをJSONに変換する 最初の例では、Jackson Core と Jackson Databind を使ってJavaのMapをJSONに変換します。 Jacksonライブラリを使用するには