在 Java 中将 JSON 转换为 XLS/CSV [已关闭]

2022-09-01 03:19:25

有没有人有任何示例Java代码将JSON文档转换为XLS / CSV文件?我试图在谷歌上搜索,但无济于事。


答案 1

您只能将 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>

2019年12月13日更新:

更新答案,因为现在我们也可以支持复杂的JSON数组。

import java.nio.file.Files;
import java.nio.file.Paths;

import com.github.opendevl.JFlat;

public class FlattenJson {

    public static void main(String[] args) throws Exception {
        String str = new String(Files.readAllBytes(Paths.get("path_to_imput.json")));

        JFlat flatMe = new JFlat(str);

        //get the 2D representation of JSON document
        flatMe.json2Sheet().headerSeparator("_").getJsonAsSheet();

        //write the 2D representation in csv format
        flatMe.write2csv("path_to_output.csv");
    }

}

依赖关系和文档详细信息在链接


答案 2

您可以使用共享资源csv转换为CSV格式。或使用 POI 转换为 xls。如果你需要帮助器转换为xls,你可以使用jxls,它可以将java bean(或list)转换为excel与表达式语言。

基本上,json文档可能是一个json数组,对吧?所以它会是一样的。结果将是列表,您只需编写要以excel格式显示的属性,该属性将由jxls读取。查看 http://jxls.sourceforge.net/reference/collections.html

如果问题是无法在jxls excel属性中读取json,只需先将其序列化为java bean的集合即可。