JAVA

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

2014年7月3日

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
-, , ,