かえでBlog

色々なことを徒然と……

【JAVA】JSONデータの取得、作成方法

      2015/08/30

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データは……

こちらより確認することができます。

 - JAVA , , ,