web-dev-qa-db-fra.com

Conversion de JSON en XLS / CSV en Java

Quelqu'un at-il un échantillon Java code pour convertir un document JSON en fichier XLS/CSV? J'ai essayé de rechercher sur Google, mais en vain.

31
BachLover2342

Vous ne pouvez convertir qu'un tableau JSON en fichier CSV.

Disons que vous avez un JSON comme celui-ci:

{"infile": [{"field1": 11,"field2": 12,"field3": 13},
            {"field1": 21,"field2": 22,"field3": 23},
            {"field1": 31,"field2": 32,"field3": 33}]}

Voyons le code pour le convertir en 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();
        }        
    }

}

Vous avez maintenant le CSV généré à partir de JSON.

Ça devrait ressembler à ça:

field1,field2,field3
11,22,33
21,22,23
31,32,33

La dépendance maven était comme,

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
</dependency>
33
Sridhar

vous pouvez utiliser csv commun pour convertir au format CSV. ou utilisez POI pour convertir en xls. si vous avez besoin d'aide pour convertir en xls, vous pouvez utiliser jxls, il peut convertir Java bean (ou list) en Excel avec langage d'expression.

Fondamentalement, le doc json est peut-être un tableau json, non? il en sera de même. le résultat sera une liste, et vous écrivez simplement la propriété que vous souhaitez afficher au format Excel qui sera lue par jxls. Voir http://jxls.sourceforge.net/reference/collections.html

Si le problème est que le json ne peut pas être lu dans la propriété jxls Excel, sérialisez-le simplement dans la collection de Java bean en premier).

3
Jef