2017-05-03 5 views
-1

저는 Java의 초보자이며 json 문서를 병합하는 방법을 찾고 있습니다.Java에서 json 문서를 병합하십시오.

객체 매퍼를 시도했지만 성공하지 못했습니다. 나는이 링크를 찾았지만 결과는 내가 필요하지 않습니다 : https://github.com/wnameless/json-flattener

나는 아래의 예와 같이 문서를 변환 할 필요가 : 여기

문서 받았다 내 문서의 예입니다

{ 
       "data1": "A", 
       "data2": "B", 
       "data3": "C", 
       "data4": [{ 
           "subdata": [{ 
               "subsubdata": "mam" 
           }, 
           { 
               "subsubdata": "mom" 
           }, 
           { 
               "subsubdata": "mim" 
           }] 
       }] 
} 

문서 형질 전환 :

{ 
       "data1": "A", 
       "data2": "B", 
       "data3": "C", 
       "data4": [ 
           {"subdata": { 
               "subsubdata": "mam" 
              } 
           }, 
           {"subdata" : { 
               "subsubdata": "mom" 
              } 
           }, 
           {"subdata" : { 
               "subsubdata": "mim" 
              } 
           } 
       ] 
} 

감사합니다.

+0

여기에서 원하는 것을 원하십니까? –

+0

@AmitK 볼 수 있듯이, 문서가 변형 될 때 배열은 하나 뿐이며 "subdata"필드는 그의 배열 크기에 따라 복제됩니다. 이 예제에서는 3 – hugo

+0

@AmitK입니다. 문서를 "received"문서로 변환해야합니다. – hugo

답변

0
try{ 
     JSONObject jsonObject = new JSONObject(documentReceived); 
     String data1 = jsonObject.getString("data1"); 
     String data2 = jsonObject.getString("data2"); 
     String data3 = jsonObject.getString("data3"); 

     JSONArray jsonArray = jsonObject.getJSONArray("data4"); 
     List<String> listSubData = new ArrayList<String>(); 

     for(int i=0; i<jsonArray.length(); i++){ 
      JSONObject subDataObject = jsonArray.getJSONObject(i); 

      JSONArray subDataArray = subDataObject.getJSONArray("subdata"); 
      for(int j=0; j<subDataArray.length(); j++){ 
       JSONObject subSubDataObject = subDataArray.getJSONObject(j); 
       String subSubDataStr = subSubDataObject.getString("subsubdata"); 

       //adding single subsubLineItem to list 
       listSubData.add(subSubDataStr); 
      } 
     } 

     //Creating doucumentTransformed object 

     jsonObject = new JSONObject(); 
     jsonObject.put("data1", data1); 
     jsonObject.put("data2", data2); 
     jsonObject.put("data3", data3); 
     jsonArray = new JSONArray(); 
     for(int i=0; i<listSubData.size(); i++){ 
      JSONObject subDataObject = new JSONObject(); 
      JSONObject subSubDataObject = new JSONObject(); 
      subSubDataObject.put("subsubdata", listSubData.get(i)); 
      subDataObject.put("subdata", subSubDataObject); 
      jsonArray.put(subDataObject); 
     } 

     jsonObject.put("data4", jsonArray); 

     //here is your document transformed data 
     System.out.println(jsonObject); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
+0

감사합니다. 그것은 작동합니다 – hugo

+0

당신의 도움이 있다면 –

+0

내가 왜 내 자신의 게시물 – hugo