programing

Java에서의 XLS/CSV로의 JSON 변환

telecom 2023. 3. 1. 09:32
반응형

Java에서의 XLS/CSV로의 JSON 변환

JSON 문서를 XLS/CSV 파일로 변환하기 위한 Java 코드 샘플이 있습니까?구글에서 검색해 봤지만 소용이 없었어요.

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

노예의존관계는 다음과 같았습니다.

<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");
    }

}

의존관계 및 문서 세부사항은 링크에 있습니다.

commons csv를 사용하여 CSV 형식으로 변환할 수 있습니다.또는 POI를 사용하여 xls로 변환합니다.xls로 변환하기 위해 도우미가 필요한 경우 jxls를 사용하면 java bean(또는 목록)을 식언어로 Excel로 변환할 수 있습니다.

기본적으로 json doc은 json 배열일 수 있습니다.그렇기 때문에 똑같습니다.결과는 리스트가 됩니다.표시하고 싶은 속성을 jxls로 읽을 엑셀 형식으로 쓰면 됩니다.http://jxls.sourceforge.net/reference/collections.html 를 참조해 주세요.

jxls excel 속성에서 json을 읽을 수 없는 것이 문제라면 먼저 java bean 컬렉션에 직렬화하십시오.

JSON 문서는 기본적으로 목록과 사전으로 구성됩니다.이러한 데이터 구조를 2차원 테이블에 매핑하는 명확한 방법은 없습니다.

언급URL : https://stackoverflow.com/questions/7172158/converting-json-to-xls-csv-in-java

반응형