web-dev-qa-db-ja.com

JavaでJSONをXLS / CSVに変換する

JSONドキュメントをXLS/CSVファイルに変換するサンプルJavaコードはありますか?Googleで検索しようとしましたが、役に立ちませんでした。

31
BachLover2342

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>
33
Sridhar

commons csvを使用してCSV形式に変換できます。またはPOIを使用してxlsに変換します。 xlsへの変換にヘルパーが必要な場合は、jxlsを使用できます。Java Bean(またはリスト)を式言語でExcelに変換できます。

基本的に、json docはjson配列です。それで同じになります。結果はリストになり、jxlsによって読み取られるExcel形式で表示するプロパティを記述するだけです。 http://jxls.sourceforge.net/reference/collections.html を参照してください

問題がjsonがjxls Excelプロパティで読み取れない場合、それをJava Beanのコレクションにシリアル化するだけです。

3
Jef