繁体   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