Javaで別のJSONオブジェクトのサブセットから新しいJSONオブジェクトを作成する方法
JSON(JavaScript Object Notation)は、データの転送や保存に広く利用されている軽量なデータ形式です。JavaのJSONObjectクラスを使うと、文字列からテキストを解析して、Mapのようなオブジェクトを生成することができます。
さらに、JSONObject(JSONObject jo, java.lang.String[] names)というコンストラクタを使用すれば、既存のJSONオブジェクトの一部(サブセット)だけを抜き出して、新しいJSONオブジェクトを構築することも可能です。このコンストラクタでは、コピー対象となるキーを文字列の配列で指定します。指定したキーが元のオブジェクトに存在しない場合、そのキーは自動的に無視されるため、安全に必要なデータだけを抽出できます。
構文
public JSONObject(JSONObject jo, java.lang.String[] names)
サンプルコード
import java.util.*;
import org.json.*;
public class JSONSubsetTest {
public static void main(String[] args) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
map.put("Name", "Adithya");
map.put("Age", 25);
map.put("DOB", new Date(94, 4, 6));
map.put("City", "Hyderabad");
JSONObject obj = new JSONObject(map);
System.out.println(obj.toString(2));
JSONObject subset = new JSONObject(obj, new String [] {"Name", "Age"});
System.out.println(subset.toString(2));
}
}このコードでは、まずHashMapに「Name」「Age」「DOB」「City」の4つのキーと値を格納し、それをもとにJSONObjectを生成しています。その後、new JSONObject(obj, new String[]{"Name", "Age"})と記述することで、「Name」と「Age」の2つのキーだけを持つサブセットのJSONオブジェクトを作成しています。
実行結果
{
"City": "Hyderabad",
"DOB": "Fri May 06 00:00:00 IST 1994",
"Age": 25,
"Name": "Adithya"
}
{
"Age": 25,
"Name": "Adithya"
}実行結果を見ると、元のJSONオブジェクトには4つのキーが含まれていますが、サブセットとして作成された新しいJSONオブジェクトには、指定した「Name」と「Age」のみが含まれていることが確認できます。このように、大きなJSONデータから必要なフィールドだけを取り出したい場合に、このコンストラクタは非常に便利です。
-
JavaでJSON配列を作成する方法をわかりやすく解説
JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x
-
JavaでJSONファイルを作成する方法をわかりやすく解説
JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed