Json-libを使用してJAVAにてJSONデータを取得・作成します。
システム要件
Json-libを使用するには
- jakarta commons-lang 2.5以上
- jakarta commons-beanutils 1.8.0以上
- jakarta commons-collections 3.2.1以上
- jakarta commons-logging 1.1.1以上
- ezmorph 1.0.6以上
が必要になるそうです。
ダウンロード
Json-libをこちらよりダウンロードします。
json-lib-2.4が現時点最新になります。
使用方法
ダウンロードしたjson-libをライブラリに格納します。
読込
以下のJSONがGETパラメータ(パラメータ名:json)で送られてきた場合
{
"boolean": true,
"null": null,
"number": 123,
"string": "Hello World"
"array": [1,2,3],
"object": {
"a": "b",
"c": "d",
"e": "f"
},
}
String strJson = (String)request.getParameter("json");
JSONObject jsonObject = JSONObject.fromObject(strJson);
//各項目の取得
System.out.println(jsonObject.get("boolean"));
System.out.println(jsonObject.get("null"));
System.out.println(jsonObject.get("number"));
System.out.println(jsonObject.get("string"));
//配列の取得
if (jsonObject.get("array") != null) {
JSONArray array = JSONArray.fromObject(jsonObject.get("array"));
for(int i = 0; i < array.size(); i++){
//配列の表示
System.out.println(answerDataList.get(i).toString());
}
}
//オブジェクトの取得
if (jsonObject.get("object") != null) {
JSONArray objectrDataList = JSONArray.fromObject(jsonObject.get("object"));
for(int i = 0; i < objectrDataList.size(); i++){
JSONObject objectrDataJson = objectrDataList.get(i);
//オブジェクト内のデータの取得
System.out.println(objectrDataJson.get("a"));
System.out.println(objectrDataJson.get("c"));
System.out.println(objectrDataJson.get("e"));
}
}
//JSONデータはbinaryデータの取得も可能です。
if(jsonObject.get("binaryData") != null){
byte[] binaryData = (byte[])jsonObject.get("binaryData");
}
jsonObjectはObject型なので、キャストすれば何にでもなれます。
書込
今回はPrintWriterにて出力を想定して作成します。
PrintWriter out;
try {
// JSONデータの作成
JSONObject json = new JSONObject();
//boolean
boolean bl = true;
json.accumulate("boolean", bl);
//null
String str1 = null;
json.accumulate("boolean", str1);
//number
int i = 1;
json.accumulate("number", i);
//String
String str2
json.accumulate("string", str2);
//配列
int[] i2 = {1,2,3};
json.accumulate("array", i2);
//オブジェクト
HashMap<String, Object> ObjectData = new HashMap<String, Object>();
ObjectData.put("a", "b" );
ObjectData.put("c", "d" );
ObjectData.put("e", "f" );
List<HashMap<String, Object>> ObjectDataList = new ArrayList<HashMap<String, Object>>();
ObjectDataList.add(ObjectData);
json.accumulate("object", ObjectDataList);
out.print(json);
}catch (IOException e) {
throw new SystemException(e);
}
出来上がったJSONデータは……
こちらより確認することができます。