是否有人有任何示例Java代码将JSON文档转换为XLS / CSV文件?我试图在Google上搜索但无济于事。
答案 0 :(得分:30)
您只能将JSON数组转换为CSV文件。
让我们说,你有一个如下的JSON:
{"infile": [{"field1": 11,"field2": 12,"field3": 13},
{"field1": 21,"field2": 22,"field3": 23},
{"field1": 31,"field2": 32,"field3": 33}]}
让我们看一下将其转换为csv的代码:
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.json.CDL;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JSON2CSV {
public static void main(String myHelpers[]){
String jsonString = "{\"infile\": [{\"field1\": 11,\"field2\": 12,\"field3\": 13},{\"field1\": 21,\"field2\": 22,\"field3\": 23},{\"field1\": 31,\"field2\": 32,\"field3\": 33}]}";
JSONObject output;
try {
output = new JSONObject(jsonString);
JSONArray docs = output.getJSONArray("infile");
File file=new File("/tmp2/fromJSON.csv");
String csv = CDL.toString(docs);
FileUtils.writeStringToFile(file, csv);
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
现在您获得了从JSON生成的CSV。
它应该是这样的:
field1,field2,field3
11,22,33
21,22,23
31,32,33
maven依赖就像,
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
答案 1 :(得分:3)
您可以使用commons csv转换为CSV格式。或使用POI转换为xls。如果你需要帮助转换成xls,你可以使用jxls,它可以用表达式语言将java bean(或list)转换为excel。
基本上,json doc可能是一个json数组,对吧?所以它会是一样的。结果将是list,您只需编写要以excel格式显示的属性,该属性将由jxls读取。见http://jxls.sourceforge.net/reference/collections.html
如果问题是json无法在jxls excel属性中读取,只需先将其序列化为java bean的集合。
答案 2 :(得分:-3)
JSON文档基本上由列表和词典组成。没有明显的方法在二维表上映射这样的数据结构。