用Java展平json文档 [英] Flatten json documents in Java
本文介绍了用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屋!
查看全文