Flatten json documents in Java

一个人想着一个人 提交于 2019-12-25 17:59:26

问题


I am a novice in Java and I am looking for a way to flatten json documents.

I have tried Object mapper but without success. I found this link but the results is not what I need :https://github.com/wnameless/json-flattener

I need to transform the documents like in the example below :

Here is an example of my documents

Documents recieved:

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

Documents Transformed :

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

Thanks


回答1:


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();
    }


来源:https://stackoverflow.com/questions/43756308/flatten-json-documents-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!