2013-12-13 5 views
5

javaのJsonオブジェクトで作業しています。次のように私は2つのJSONオブジェクトを持っている:Javaのキーに従って2つのjsonオブジェクトを追加します

私は上記の結果を達成するために2つのオブジェクトをマージする必要がありますどのように
{"a":{"num1":5,"num2":7},"b":{"num1":8,"num2":9}} 

{"a":{"num1":5},"b":{"num1":8}} 

{"a":{"num2":7},"b":{"num2":9}} 

は、私はのような単一のJSONオブジェクトを作成したいですか?

+0

JSONはどのようにJavaで表現されていますか?彼らは弦ですか?あなたはすでにライブラリを使用していますか? – robbmj

+0

これをチェックする必要がありますhttp://stackoverflow.com/questions/2403132/concat-multiple-jsonobjects –

答えて

1

簡単な方法は、2つのオブジェクトの上にリストし、ループを作成することです:

public static void main(String[] args) { 
    String str1 = "{\"a\":{\"num1\":5},\"b\":{\"num1\":8}}"; 
    String str2 = "{\"a\":{\"num2\":7},\"b\":{\"num2\":9}}"; 

    try { 
     JSONObject str1Json = new JSONObject(str1); 
     JSONObject str2Json = new JSONObject(str2); 

     List<JSONObject> list = Arrays.asList(str1Json, str2Json); 

     JSONObject storage = new JSONObject(); 
     JSONObject storageA = new JSONObject(); 
     JSONObject storageB = new JSONObject(); 
     JSONObject a; 
     JSONObject b; 
     JSONObject obj; 

     for(int i=1; i<= list.size(); i++){ 

      obj = list.get(i-1); 

      a = obj.getJSONObject("a"); 
      b = obj.getJSONObject("b"); 

      storageA.put("num"+i, a.getInt("num"+i)); // we don't want build list    
      storageB.put("num"+i, b.getInt("num"+i));    
     } 

     storage.put("a", storageA); 
     storage.put("b", storageB); 

     System.out.println(storage.toString()); 
    } catch (JSONException e1) { 
    } 
} 

出力:

{"b":{"num2":9,"num1":8},"a":{"num2":7,"num1":5}} 
0

[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];を使用して辞書にJSONオブジェクトに変換して、簡単に操作を行います。

関連する問題