2017-02-22 361 views
1

我试图使用PapaParse库(http://papaparse.com/)将JavaScript对象/ JSON转换为CSV文件。特别是在我的情况下,每个记录可能有不同的字段。我希望得到的CSV输出是给定记录的所有字段的集合。采取下面的JSON: -PapaParse“unparse”函数可以使用不同的标题吗?

[ 

{"name":"ken", 
    "age":"35"}, 

{"name":"joe", 
    "age":"37", 
    "shoe_size":"12"}, 

{"name":"fred", 
    "age":"26", 
    "favourite_colour":"blue"} 

] 

你会看到,“弗雷德”具有“favourite_colour”和“乔”具有“shoe_size”,他们都有一个名字和年龄。

如果我的代码粘贴到这里:https://konklone.io/json/

我得到的是这样的: -

name age shoe_size favourite_colour 
ken  35  
joe  37 12 
fred 26    blue 

本质上,它分析整个数据集,以及如果存在填充每个头,这是什么我想要。不过,如果我使用PapaParse功能: -

Papa.unparse('[{"name":"ken","age":"35"},{"name":"joe","age":"37","shoe_size":"12"},{"name":"fred","age":"26","favourite_colour":"blue"}]',{type:"text/csv;charset=utf-8"}); 

我得到: -

name age 
ken  35 
joe  37 
fred 26 

所以看来Papa.unparse()函数仅在采取先头的音符记录,并忽略随后发生的任何记录。

我知道理论上我可以确保第一记录有各个领域,即使它是空白做傻事,但不知道是否有一个功能/选项,将使它以这种方式工作没有这样劝说

感谢

回答

0

我想你可以穿过田野明确地unparse,像这样:

var csv = Papa.unparse({ 
fields: ["name", "age", "shoe_size", "favourite_color"], 
data: [ 

{"name":"ken", 
    "age":"35"}, 

{"name":"joe", 
    "age":"37", 
    "shoe_size":"12"}, 

{"name":"fred", 
    "age":"26", 
    "favourite_colour":"blue"} 
    ] 
}); 
+0

是的,我认为这工作 - 需要订做等领域阵列第一当然所以这是一个额外的一步,但不是太繁重。然而,事实证明,对于我的特殊用例(只转换为csv),似乎PapaParse是过度杀毒,我设法使用https://github.com/evanplaice/jquery-csv来执行我需要的转换。不过,我认为如果使用PapaParse并需要双向转换,那么这个解决方案非常棒。 – stuffandting

相关问题