在Java中将JSON转换为XLS / CSV
有没有人有任何示例Java代码来将JSON文档转换为XLS / CSV文件? 我试图search谷歌,但无济于事。
您只能将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>
你可以使用commons csv转换成CSV格式。 或者使用POI转换成xls。 如果你需要帮助者转换成xls,你可以使用jxls,它可以通过expression式语言将java bean(或者list)转换成excel。
基本上,JSON文件也许是一个JSON数组,对吗? 所以它会一样。 结果将是列表,并且你只需要写出你想以excel格式显示的属性,它将被jxls读取。 请参阅http://jxls.sourceforge.net/reference/collections.html
如果问题是json无法在jxls excel属性中读取,只需将其序列化为java bean的集合。
JSON文档基本上由列表和字典组成。 在二维表上映射这样的数据结构没有明显的方法。