如何在Java中将动态JSON数组转换为CSV

如何在Java中将动态JSON数组转换为CSV,java,json,csv,jackson,gson,Java,Json,Csv,Jackson,Gson,我正在尝试从动态生成的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数组中每个键值对的顺序是随机的。我事先也不知道钥匙的名字

我正在尝试从动态生成的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名称)

我尝试过使用,但这需要我创建一个预定义的POJO作为中间层(JSON->POJO->CSV)。据我所知,Java不允许我在运行时动态生成类的成员变量,所以这个方法不起作用。我也是


我需要在一个大的数据集上完成这项工作,所以效率将是非常关键的。解决此问题的最佳方法是什么?

使用流式API解析json数据。Jackson library或json simple支持json数据的流式解析。要生成CSV,请使用opencsv中的CSVWriter。

您可以使用该库。它不需要任何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",,

我非常了解可用的技术和高级解决方案。我的问题比将API粘在一起更复杂。我正在处理JSON数组中动态生成和随机排序的元素。我的最终输出CSV必须是结构化的,列必须根据特定的模式进行排序(如上所示)。你能解决它吗?