如何在Java中将动态JSON数组转换为CSV
我正在尝试从动态生成的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数组中每个键值对的顺序是随机的。我事先也不知道钥匙的名字
"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必须是结构化的,列必须根据特定的模式进行排序(如上所示)。你能解决它吗?