簡體   English   中英

如何在Java中將動態JSON數組轉換為CSV

[英]How do I convert a dynamic JSON array to a CSV in Java

我正在嘗試從動態生成的JSON數組創建CSV文件。 例如:

"People" : 
[{"name" : "Bob", "age" : 5 },
 {"dob" : "5/2/4", "name" : "Alice"},
 {"name" : "George"}]

將創建csv文件

name, age, dob
Bob, 5, 
Alice, , 5/2/4
George, ,

如您所見,我需要為JSON數組中的每個字段創建一列。 JSON數組中每個鍵值對的順序都是隨機的。 我也事先不知道鍵的名稱。 不用擔心“ People”字段,每個JSON中只有一個數組。 (這將是CSV名稱)。

我嘗試使用Jackson CSV庫,但這需要我創建一個預定義的POJO作為中間層(JSON-> POJO-> CSV)。 據我所知,Java不允許我在運行時動態生成類的成員變量,因此該方法將不起作用。 GSON相同。

我將需要在大型數據集上執行此操作,因此效率將是關鍵。 解決這個問題的最佳方法是什么?

使用流API解析json數據。 Jackson庫或json-simple支持JSON數據的流解析。 要生成CSV,請使用opencsv中的CSVWriter。

您可以使用庫json2flat 不需要任何POJO即可進行轉換。

您只需要將JSON作為字符串傳遞即可。

對於以下JSON:

{
    "People" : 
        [
            {"name" : "Bob", "age" : 5 },
            {"dob" : "5/2/4", "name" : "Alice"},
            {"name" : "George"}
        ]
}

輸出為:

/People/name,/People/age,/People/dob
"Bob",5,
"Alice",,"5/2/4"
"George",,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM