HOWTO · Java
Java でオブジェクトを JSON にシリアライズする
このチュートリアルでは、Java でオブジェクトを JSON にシリアル化する方法を示します。
このページの内容
このチュートリアルでは、Java-JSON および Jackson API を使用して Java でオブジェクトを JSON にシリアル化する方法を示します。
Java でオブジェクトを JSON にシリアライズする
JSON操作に使用されるさまざまなライブラリが提供されています。 これらのライブラリーは、Java プログラミングを使用して Java オブジェクトを JSON にシリアライズすることもできます。
Java-JSON API を使用して Java オブジェクトを JSON にシリアライズする
Java は組み込みモードで JSON をサポートしていないため、Java-JSON は Java で JSON 操作を実行するためのサードパーティ API です。 このライブラリは、Java オブジェクトを JSON にシリアル化できます。
Java-JSON にはさまざまな機能があり、多くの同様のライブラリよりも優れています。 主な機能は次のとおりです。
- 下位互換性。
- 一貫した信頼できる結果。
- 実行速度が速く、メモリ使用量が少ない。
- 外部依存関係はありません。
- JSON 仕様への準拠を提供します。
この API を使用する前に、ビルド パスに追加する必要があります。 Gradle プロジェクトの依存関係を使用して簡単に実行できます。
implementation 'org.json:json:20210307'
こちら からこの API の jar ファイルをダウンロードして、プロジェクトのビルド パスに追加することで、一般的な Java プロジェクトに追加することもできます。
Java-JSON は、Java データを JSON オブジェクトにシリアル化するために使用できるクラス JSONWriter を提供します。 例を試してみましょう:
package delftstack;
import java.io.StringWriter;
import java.io.Writer;
import org.json.JSONException;
import org.json.JSONWriter;
public class Example {
public static void main(String[] args) throws JSONException {
Writer DemoUser = new StringWriter();
var JSON_Writer = new JSONWriter(DemoUser);
JSON_Writer.object();
JSON_Writer.key("Name").value("Sheeraz");
JSON_Writer.key("Occupation").value("Software Engineer");
JSON_Writer.key("Age").value(28);
JSON_Writer.key("Married").value(false);
JSON_Writer.key("Skills");
JSON_Writer.array();
JSON_Writer.value("Java");
JSON_Writer.value("Python");
JSON_Writer.value("PHP");
JSON_Writer.value("Matlab");
JSON_Writer.value("R");
JSON_Writer.endArray();
JSON_Writer.endObject();
System.out.println(DemoUser);
}
}
上記のコードは、API の JSONWriter クラスを使用してデータを JSON オブジェクトにシリアル化します。 出力を参照してください:
{"Name":"Sheeraz","Occupation":"Software Engineer","Age":28,"Married":false,"Skills":["Java","Python","PHP","Matlab","R"]}
Jackson API を使用して Java オブジェクトを JSON にシリアライズする
Jackson は、Java での JSON 操作用のオープンソース ライブラリです。 このライブラリは、Java で JSON オブジェクトをシリアライズおよびデシリアライズできます。
このライブラリには、Java オブジェクトを JSON オブジェクトにシリアライズするために使用される writeValue(...) メソッドがあります。 この API は、maven の依存関係として追加できます。
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
もう 1つの方法は、Jackson API の jars を一般的なプロジェクト ビルド パスに追加することです。 以下のリンクから jars をダウンロードします。
API がビルド パスに追加されたら、Java オブジェクトを JSON にシリアル化する例を試すことができます。
package delftstack;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
public class Example {
public static void main(String args[]) {
Example JSON_Tester = new Example();
try {
Employee Employee1 = new Employee();
Employee1.setAge(28);
Employee1.setName("Sheeraz");
JSON_Tester.writeJSON(Employee1);
Employee Employee2 = JSON_Tester.readJSON();
System.out.println(Employee2);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void writeJSON(Employee employee)
throws JsonGenerationException, JsonMappingException, IOException {
ObjectMapper Object_Mapper = new ObjectMapper();
Object_Mapper.writeValue(new File("employee.json"), employee);
}
private Employee readJSON() throws JsonParseException, JsonMappingException, IOException {
ObjectMapper Object_Mapper = new ObjectMapper();
Employee employee = Object_Mapper.readValue(new File("employee.json"), Employee.class);
return employee;
}
}
class Employee {
private String Employee_Name;
private int Employee_Age;
public Employee() {}
public String getName() {
return Employee_Name;
}
public void setName(String Employee_Name) {
this.Employee_Name = Employee_Name;
}
public int getAge() {
return Employee_Age;
}
public void setAge(int Employee_Age) {
this.Employee_Age = Employee_Age;
}
public String toString() {
return "Employee [Employee Name: "+Employee_Name+",
Employee Age: "+Employee_Age+ " ]";
}
}
上記のコードは、データを Java クラスから JSON に変換します。 出力を参照してください:
Employee [Employee Name: Sheeraz, Employee Age: 28 ]