我有以下格式的 JSON,我正在尝试写入 CSV:
{
"results": [{
"geo_position": {
"Field1": 11,
"Filed2": 12
},
"Field3": 13,
"Filed4": 14,
"Field5": 15
},
{
"geo_position": {
"Field1": 21,
"Filed2": 22
},
"Field3": 23,
"Filed4": 24,
"Filed5": 25
}
]
}
我期待这样的输出:
field1,field2,field3,field4,field5
11,12,13,14,15
21,22,23,24,25
我得到的输出 CSV 如下:
geo_position,field3,field4,field5
{Field1:11,Field2:12}, 13,14,15
{Field2:21,Field2:22},23,24,25
我的java代码:
JSONObject jsonObj = new JSONObject(jsonArray);
System.out.println(jsonObj);
JSONArray docs = jsonObj.getJSONArray("results");
File file=new File("C:/fromJSON2.csv");
String csv = CDL.toString(docs);
FileUtils.writeStringToFile(file, csv);
有人能帮我弄清楚为什么我的格式不同吗?我应该怎么做才能获得我期望的格式?
最佳答案
数据中有一些错别字。
你可以试试 json2flat 用于转换 JSON 文档以获得等效的 CSV 表示。
如果您想尝试更多 JSON 文档,请单击 here .
对于 JSON 数据:
{
"results": [{
"geo_position": {
"Field1": 11,
"Field2": 12
},
"Field3": 13,
"Field4": 14,
"Field5": 15
},
{
"geo_position": {
"Field1": 21,
"Field2": 22
},
"Field3": 23,
"Field4": 24,
"Field5": 25
}
]
}
等效的 CSV 表示:
results/Field3,results/Field4,results/Field5,results/geo_position/Field1,results/geo_position/Field2
13.0,14.0,15.0,11.0,12.0
23.0,24.0,25.0,21.0,22.0
代码也非常简单。
JFlat flatMe = new JFlat(jsonString);
flatMe
.json2Sheet()
.headerSeparator("/")
.write2csv("test.csv");
这会将结果写入 test.csv 文件。
关于java - 将 JSON 转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388119/