chi*_*iru 6 java csv rest json
我有以下格式的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
}
]
}
Run Code Online (Sandbox Code Playgroud)
我期待输出像:
field1,field2,field3,field4,field5
11,12,13,14,15
21,22,23,24,25
Run Code Online (Sandbox Code Playgroud)
我得到输出CSV如下:
geo_position,field3,field4,field5
{Field1:11,Field2:12}, 13,14,15
{Field2:21,Field2:22},23,24,25
Run Code Online (Sandbox Code Playgroud)
我的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);
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄清楚为什么我会采用不同的格式.我应该怎么做以达到我期望的格式?
你的 JSON 结构是
{
"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
}
]
}
Run Code Online (Sandbox Code Playgroud)
为了让它按照你想要的方式工作,它应该是这样的:
{
"results":
[
{
"Field1":11,
"Filed2":12,
"Field3":13,
"Filed4":14,
"Field5":15
},
{
"Field1":21,
"Filed2":22,
"Field3":23,
"Filed4":24,
"Filed5":25
}
]
}
Run Code Online (Sandbox Code Playgroud)
你可以做什么
for(int i = 0; i<resultsJSONArray.length(); ++i){
if(resultsJSONArray.get(i).has("geo_position")) {
String names[] = JSONObject.getNames(resultsJSONArray.get(i).get("geo_position")));
for(int i = 0; i<names().length; ++i) {
resultsJSONArray.get(i).put(names[i],resultsJSONArray.get(i).get("geo_position").get(names[i]));
}
JSONObject.getNames(resultsJSONArray.get(i).remove("geo_position"));
}
}
Run Code Online (Sandbox Code Playgroud)