在Java中将JSON转换为XLS/CSV

Bac*_*342 31 java csv excel json xls

有没有人有任何样本Java代码将JSON文档转换为XLS/CSV文件?我试图在Google上搜索但无济于事.

Sri*_*har 35

您只能将JSON数组转换为CSV文件.

可以说,你有一个如下的JSON:

{"infile": [{"field1": 11,"field2": 12,"field3": 13},
            {"field1": 21,"field2": 22,"field3": 23},
            {"field1": 31,"field2": 32,"field3": 33}]}
Run Code Online (Sandbox Code Playgroud)

让我们看看将其转换为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();
        }        
    }

}
Run Code Online (Sandbox Code Playgroud)

现在您获得了从JSON生成的CSV.

它应该如下所示:

field1,field2,field3
11,22,33
21,22,23
31,32,33
Run Code Online (Sandbox Code Playgroud)

maven依赖是这样的,

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • @SwapL您可以使用相同的3参数方法.`FileUtils.writeStringToFile(file,csv,null);`其中第3个参数是编码&null是平台默认值. (3认同)
  • @GowthamanM您可以使用[apache-poi](https://poi.apache.org/)库来写入excel文件.但是,你必须迭代JsonArray`docs`来编写每个单独的单元格. (2认同)
  • @GowthamanM我不认为只是改变文件扩展名就行了.我建议您将JSON保存为CSV(使用上面的代码块)并读取CSV(使用CSVReader)并将其写入XLS(使用apache-poi)[csv_to_xls](http://thinktibits.blogspot.in/2012/ 12 /转换-CSV到XLS-使用的Java-POI-OpenCSV-example.html的).在这里,您也可以将标题设置为黑色背景(如前所述). (2认同)

小智 -4

JSON 文档基本上由列表和字典组成。没有明显的方法可以将这种数据结构映射到二维表上。