2016-12-16 2 views
-3

Ich möchte diese JSON in CSV konvertieren:Warum konvertiert mein Code JSON nicht korrekt in CSV?

{"field1": 11,"field3": 13}, 
{"field1": 21,"field2": 22,"field3": 23}, 
{"field1": 31,"field2": 32,"field3": 33,"field4": 34} 

und zu tun, so verwende ich den folgenden Code:

String jsonString1 = "{\"infile\": [{\"field1\": 11,\"field3\": 13},{\"field1\": 21,\"field2\": 22,\"field3\": 23},{\"field1\": 31,\"field2\": 32,\"field3\": 33,\"field4\": 34}]}"; 

    try 
    { 
     output = new JSONObject(jsonString1); 
     String destination = "tmp/json2csv.csv"; 
     JSONArray docs = output.getJSONArray("infile"); 

     File file = new File(destination); 
     String csv = CDL.toString(docs); 
     FileUtils.writeStringToFile(file, csv); 
    } 
    catch (JSONException e) { 

    } 

ich die CSV-Ausgabe dieser Tabelle äquivalent zu erwarten:

field1 field2 field3 field4 
11    13 
21  22  23 
31  32  33  34  

Aber zur Zeit ist die Ausgabe CSV entspricht diese Tabelle:

field1 field2 field3 field4 
13    13 
21    23 
31    33 

Warum gibt dieser Code die erwarteten Ergebnisse nicht zurück?

+2

Bitte geben Sie den Code des CDL.toString() Methode/Klasse und die JSONObject Klasse. Im Moment zeigt der Code, den Sie uns gegeben haben, keine tatsächlichen Implementierungsdetails, so dass die Beantwortung der Frage unmöglich ist. –

+0

Zeigen Sie uns den interessanten Code (der wahrscheinlich CDL.toString ist). Sonst können wir dir nicht helfen. –

Antwort

0

Sie Angenommen mit org.json.CDL dann Sie die überladene Methode versuchen wollen String toString(JSONArray names, JSONArray ja):

try 
{ 
    JSONObject output = new JSONObject(jsonString1); 
    JSONArray docs = output.getJSONArray("infile"); 
    JSONArray names = new JSONArray("['field1', 'field2', 'field3', 'field4']"); 
    String header = CDL.rowToString(names); 
    String csv = header + CDL.toString(names, docs); 

    String destination = "tmp/json2csv.csv"; 
    File file = new File(destination); 
    FileUtils.writeStringToFile(file, csv); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 
Verwandte Themen