2016-09-13 4 views
0

두 개의 json 파일이 있습니다. 나는 구문 분석하고 하나의 구조로 JSON에 가입해야요소를 기반으로 두 개의 jsons를 결합하십시오.

lineage.json

{ 
    "lineage": [{ 
     "sourceColumnId": "VMB_BESTADDRESS.SNAPSHOT_TS", 
     "description": "", 
     "targetColumnId": "VMB_BESTADDRESSUSAGE.NXREINS" 
    }, 
    { 
     "sourceColumnId": "DSL_RECORD_SOURCES.MAMACT", 
     "description": "", 
     "targetColumnId": "G2_ZUMADF00.MAMACT" 
    }, 
    { 
     "sourceColumnId": "DSL_RECORD_SOURCES.MAMADE", 
     "description": "", 
     "targetColumnId": "G2_ZUMADF00.HDF_S_POL_GEN" 
    }] 
} 

column.json

내가 sourcecolumnId의 모든 일치하는 두 jsons 등 가입해야
{ 
    "column": [{ 
     "ID": 39700, 
     "columnId": "VMB_BESTADDRESS.SNAPSHOT_TS", 
     "column": "SNAPSHOT_TS", 
     "dataType": "String", 
     "length": "", 
     "table": "VMB_BESTADDRESS", 
    }, 
    { 
     "ID": 39701, 
     "columnId": "VMB_BESTADDRESSUSAGE.NXREINS", 
     "column": "NXREINS", 
     "dataType": "String", 
     "length": "", 
     "table": "VMB_BESTADDRESSUSAGE", 

    }, 
    { 
     "ID": 39702, 
     "columnId": "VMB_BESTADDRESSUSAGE.PKADDRESSCODE", 
     "column": "PKADDRESSCODE", 
     "dataType": "String", 
     "length": "", 
     "table": "VMB_BESTADDRESSUSAGE", 
    }] 
} 

열에있는 targetcolumnid를 채워야합니다. 다음의 json 구조는 채워 져야합니다.

{ 
    output:{ 
     sourceColumnId:VMB_BESTADDRESS.SNAPSHOT_TS, 
     sourceColumnName:SNAPSHOT_TS, 
     targetColumnId:VMB_BESTADDRESSUSAGE.NXREINS, 
     targetColumnNameNXREINS, 
    } 
} 

출력을 얻으려면 두 json 조회에 참여해야합니다.

sourceColumnName -> column.json의 columnId 및 sourceColumnId가 동일한 열 이름. 도 targetcolumnName과 유사합니다.

+1

예. 그래서 당신의 질문은 무엇입니까? –

+0

@JoeriHendrickx 결과를 얻으려면 두 json 조회에 참여해야합니다. –

답변

0
String str = "xxx";  // column.json 

    JSONArray jsonArrayColumn = JSON.parseObject(str); 
    Map<String, JSONObject> column = new HashMap();  // {id:name} 
    for(int i = 0; i < jsonArrayColumn.size(); i++){ // loop 
     JSONObject obj = jsonArrayColumn.getJSONObject(i); 
     column.put(obj.getString("columnId"), obj.getString("column")); 
    } 

    String str2 = "xxx"; // lineage.json 
    JSONArray jsonArrayLineage = JSON.parseObject(str2); 

    JSONArray resultArray = new JSONArray(); 
    for(int i = 0; i < jsonArrayLineage.size(); i++){ // loop 
     JSONObject lineageObj = jsonArrayLineage.getJSONObject(i); 
     JSONObject obj = new JSONObject(); 
     obj.put("sourceColumnId", lineageObj.get("sourceColumnId")); 
     obj.put("sourceColumnName", column.get(lineageObj.get("sourceColumnId"))); 
     obj.put("targetColumnId", lineageObj.get("targetColumnId")); 
     obj.put("targetColumnName", column.get(lineageObj.get("targetColumnId"))); 
    } 

resultArray은 원하는 것입니다.