JavaでJSONオブジェクトをエンコードする2つの方法をわかりやすく解説
JSONObjectとは
JSONObjectはjava.util.HashMapのサブクラスで、要素の順序は保証されません。要素の順序を厳密に管理したい場合は、JSONValue.toJSONString(map)メソッドを使用するか、java.util.LinkedHashMapを実装することで対応できます。
ここでは、JSONオブジェクトをエンコードする2つの方法をコード例とともに紹介します。
事前準備:json-simpleライブラリの追加
org.json.simpleパッケージを使用するには、json-simpleライブラリが必要です。Mavenプロジェクトの場合は、pom.xmlに以下の依存関係を追加してください。
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
例1:HashMapからJSONObjectを生成する
import java.util.*;
import org.json.simple.JSONObject;
public class JSONEncodingTest {
public static void main(String[] args) {
Map<Object, Object> dataMap = new HashMap<Object, Object>();
dataMap.put("Name", "Adithya");
dataMap.put("Age", new Integer(25));
dataMap.put("Salary", new Double(25000.00));
dataMap.put("Employee Id", new Integer(115));
dataMap.put("Company", "TutorialsPoint");
JSONObject jsonObj = new JSONObject(dataMap);
System.out.print("Encoding a JSON object: ");
System.out.print(jsonObj);
}
}
出力結果
Encoding a JSON object: {"Salary":25000.0,"Employee id":115,"Company":"TutorialsPoint","Age":25,"Name":"Adithya"}
この例では、Mapに格納したデータをそのままJSONObjectのコンストラクタに渡してJSONオブジェクトを生成しています。使用しているのがHashMapのため順序は保持されず、出力されるキーの並び順は実行環境によって異なる場合があります。
例2:writeJSONString()メソッドで出力する
import java.io.*;
import org.json.simple.*;
public class JSONEncodingTest1 {
public static void main(String[] args) throws IOException {
JSONObject obj = new JSONObject();
obj.put("Name", "Jai");
obj.put("Mobile_Number", new Integer(995998480));
obj.put("Bank_Balance", new Double(50000.00));
obj.put("Is_A_SelfEmployee", new Boolean(false));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
出力結果
{"Is_A_SelfEmployee":false,"Bank_Balance":50000.0,"Mobile_Number":995998480,"Name":"Jai"}
この例では、JSONObjectに直接put()でデータを追加し、writeJSONString()メソッドでWriterオブジェクトへ書き出しています。この方法を使えば、JSON文字列をファイルやネットワークストリームなどへ直接出力することも可能です。
まとめ
JavaでJSONオブジェクトをエンコードする方法は、主に次の2つがあります。
- Map(HashMapなど)にデータを格納し、JSONObjectのコンストラクタに渡して生成する方法
- JSONObjectに直接値を追加し、writeJSONString()で出力する方法
また、キーの順序を保持したJSON文字列が必要な場合は、HashMapの代わりにLinkedHashMapを使用してデータを構築するとよいでしょう。
-
【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)
JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず
-
JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説
このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ