这个问题已经问了很多次了,但我找不到解决问题的答案。
我试图将嵌套的JSON格式转换为CSV格式,如下所示:
JSON结构是任意的,可以是任何,不管嵌套与否。
我不应该知道,它是一个数据库答案,我需要将这个JSON答案导出到CSV文件中。
下面是一个示例
投入:
{
"_id": 1,
"name": "Aurelia Menendez",
"scores": [
{
"type": "exam",
"score": 60.06045071030959
},
{
"type": "quiz",
"score": 52.79790691903873
},
{
"type": "homework",
"score": 71.76133439165544
}
]
}
我想要的输出:
_id,name,scores.type,scores.score,scores.type,scores.score,scores.type,scores.score
1,Aurelia Menendez,exam,60.06...,quiz,52.79...,homework,71.76..
这是一个例子,它可以是任何其他的JSON文档。
这里的想法是在CSV列名中使用点符号。
我已经使用了CDL,但是输出不是我想要的:
_id scores name
1 "[{score:60.06045071030959,type:exam},{score:52.79790691903873,type:quiz},{score:71.76133439165544,type:homework}]" Aurelia Menendez
那么,如何使用点表示法并以通用方式将嵌套的JSON转换为CSV呢?
编辑
用Jackson反序列化JSON:
ObjectMapper mapper=new ObjectMapper();
JsonNode jsonNode=mapper.readValue(new File("C:\\...\\...\...\\test.json"), JsonNode.class);
伊斯梅尔
发布于 2016-12-10 21:54:49
就像你说的:
JSON结构是任意的,可以是任何,不管嵌套与否。
JSON到CSV的转换不能泛化,因为它因用户而异,而且还取决于特定的需求。
但是仍然有一个库 json2flat试图实现它。但它可能与用户的需求不同。但还是值得一试。
例如,对于上面给出的JSON:
{
"_id": 1,
"name": "Aurelia Menendez",
"scores": [
{
"type": "exam",
"score": 60.06045071030959
},
{
"type": "quiz",
"score": 52.79790691903873
},
{
"type": "homework",
"score": 71.76133439165544
}
]
}
可解释如下:
/_id,/name,/scores/type,/scores/score
1,"Aurelia Menendez","exam",60.06045071030959
1,"Aurelia Menendez","quiz",52.79790691903873
1,"Aurelia Menendez","homework",71.76133439165544
发布于 2014-09-16 07:58:32
在Java中将JSON转换为XLS/CSV有你要找的东西。
基本上,您需要使用org.json.CDL将JSON格式转换为CSV格式
发布于 2014-07-17 07:26:50
评论是不方便的地方张贴较长的答案,所以我张贴我的答案在这里。
就这样。
https://stackoverflow.com/questions/24778058
复制相似问题