用Java展平json文档 [英] Flatten json documents in Java

查看:298
本文介绍了用Java展平json文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java的新手,我正在寻找一种扁平化json文档的方法.

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

我尝试了对象映射器,但是没有成功.我找到了此链接,但结果不是我需要的: https://github.com/wnameless/json -flattener

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 :

这是我的文件示例

收到的文件:

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

谢谢

推荐答案

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

这篇关于用Java展平json文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆