2017-02-22 357 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

相關問題