2016-12-16 61 views
-3

我想這個JSON轉換成CSV:爲什麼我的代碼沒有正確地將JSON轉換爲CSV?

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

,並這樣做,我用下面的代碼:

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) { 

    } 

我預計CSV輸出等同於該表:

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

但是目前我們正在輸出CSV相當於該表:

field1 field2 field3 field4 
13    13 
21    23 
31    33 

爲什麼這段代碼沒有返回我期望的結果?

+2

請給我們CDL.toString()方法/類的代碼和的JSONObject類。目前您給我們的代碼沒有顯示任何實際的實施細節,因此回答這個問題是不可能的。 –

+0

向我們展示有趣的代碼(可能是CDL.toString)。否則,我們無法幫助你。 –

回答

0

假設你正在使用org.json.CDL那麼你想嘗試重載方法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(); 
} 
相關問題