Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
169 views
Welcome To Ask or Share your Answers For Others

1 Answer

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...