2016-09-13 1 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

{ 
    "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", 
    }] 
} 

Мне нужно соединить два jsons таким образом, что для каждого матча sourcecolumnId и targetcolumnid в колонке должна быть заполнена следующая json-структура

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

Мне нужно присоединиться к поиску двух json, чтобы получить вывод таким образом, что

sourceColumnName -> имя столбца from 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 - это то, что вы хотите.

Смежные вопросы