Conversion JSON en Xls / CSV en Java [fermé]
Quelqu'un a-t-il un exemple de code Java pour convertir un document JSON en fichier XLS/CSV? J'ai essayé de chercher sur Google mais en vain.
3 réponses
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();
}
}
}
Maintenant vous avez le CSV généré par JSON.
Il devrait ressembler à ceci:
field1,field2,field3
11,22,33
21,22,23
31,32,33
La dépendance maven,
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
vous pouvez utiliser commons csv pour convertir en 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 liste) en excel avec le langage d'expression.
en gros, le JSON doc est peut-être un JSON array, Non? de sorte qu'il sera de même. le résultat sera list, et vous écrirez simplement la propriété que vous voulez afficher dans le 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é excel de jxls, il suffit de le sérialiser dans la collection de Java bean en premier.