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を使う上で重要なポイントなので、独自クラスを作成する際は必ず意識しておきましょう。
-
Pythonで文字列をJSONに変換する方法|json.loads()の使い方を解説
PythonでJSON文字列を辞書(dict)に変換する基本Pythonでは、標準ライブラリの json モジュールを使うことで、JSON形式の文字列を簡単に扱うことができます。文字列として渡されたJSONデータをPythonの辞書型に変換するには、json.loads() メソッドを使用します。json.loads() は、有効なJSON文字列を受け取り、それを解析して辞書オブジェクトを返します。返された辞書には、すべての要素にキーを使ってアクセスできます。json.loads()の使用例>>> import json >>> s = {success:
-
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ライブラリを使用するには