2017-10-13 15 views
0

私は以下のようなjsonファイルを持っています。Javaを使用してjsonファイルにキー値を追加

{ 
    "List": [ 
    { 
     "C1": "A", 
     "C2": "mail1", 
     "C3": "1" 
    }, 
    { 
     "C1": "B", 
     "C2": "mail2", 
     "C3": "2" 
    }, 
    { 
     "C1": "C", 
     "C2": "mail3", 
     "C3": "3" 
    }, 
    { 
     "C1": "D", 
     "C2": "mail4", 
     "C3": "4" 
    } 
    ] 
} 

このjsonファイルにキー値を追加したかったので、このようになります。

{ 
     "List": [ 
     { 
      "C0": "I1", 
      "C1": "A", 
      "C2": "mail1", 
      "C3": "1" 
     }, 
     { 
      "C0": "I2", 
      "C1": "B", 
      "C2": "mail2", 
      "C3": "2" 
     }, 
     { 
      "C0": "I3", 
      "C1": "C", 
      "C2": "mail3", 
      "C3": "3" 
     }, 
     { 
      "C0": "I4", 
      "C1": "D", 
      "C2": "mail4", 
      "C3": "4" 
     } 
     ] 
} 

どのように我々はjava8.Iでこれを達成することができますが、ジャクソン-すべて-1.9.0のjar で試してみましたが、last.Helpでキー値がにappriciatedされて追加しています。

+0

既存のマップの順序を変更することはできません。それは挿入順序を保持します。あなたが試してみることの1つは、新しいキー値のペアを配置して新しいマップを作成し、元のマップのすべてのキー値を新しく作成したマップに配置することです。 –

+0

jacksonでそれを実行しようとしたコードを表示します。表示されないコードを修正するのは難しい –

答えて

1

これは次の方法で実現できます。

try { 

     JSONObject objs = new JSONObject("{\"List\":[\n" + 
       "{\"C1\":\"A\",\"C2\":\"mail1\",\"C3\":\"1\"},\n" + 
       "{\"C1\":\"B\",\"C2\":\"mail2\",\"C3\":\"2\"},\n" + 
       "{\"C1\":\"C\",\"C2\":\"mail3\",\"C3\":\"3\"},\n" + 
       "{\"C1\":\"D\",\"C2\":\"mail4\",\"C3\":\"4\"}\n" + 
       "]}"); 

     JSONArray jsonArray=objs.getJSONArray("List"); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject obj = jsonArray.getJSONObject(i); 
      obj.put("C0", "I" + (i + 1)); 
      jsonArray.put(i,obj); 
     } 
     Log.v("TAG_RESULT",jsonArray.toString()); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

このコードをコンパイルしましたか?これはJSONArrayではありません。 –

+0

@SachinGuptaそれは何ですか? –

+0

これはJsonObjectです –

関連する問題