以下是我們?nèi)绾卧谀_本中輕松地將 JSON 轉(zhuǎn)換為 CSV:
這將是 CSV 輸出:
了解步驟
我們創(chuàng)建了一個(gè)可重用的函數(shù),讓我們將多個(gè) JSON 字符串轉(zhuǎn)換為 CSV。它采用一個(gè)包含對(duì)象的數(shù)組。每個(gè)對(duì)象將在 CSV 輸出中占用一行。jsonToCsv()
我們?cè)诖撕瘮?shù)中執(zhí)行的第一個(gè)操作是獲取將用于 CSV 標(biāo)頭的所有密鑰。我們希望數(shù)組中的所有對(duì)象都具有相同的鍵,因此我們使用 Object.keys() 方法將第一個(gè)對(duì)象項(xiàng)中的鍵提取到數(shù)組中。
獲取密鑰后,我們?cè)跀?shù)組上調(diào)用 join() 方法,將所有元素連接成 CSV 標(biāo)頭字符串。
接下來,我們創(chuàng)建一個(gè)函數(shù),該函數(shù)將作為回調(diào)傳遞給 JSON.stringify() 函數(shù)的替換符參數(shù)。此函數(shù)將處理或?qū)傩?JSON 數(shù)組中對(duì)象的值。undefined null
然后,我們使用 Array map() 方法從每個(gè)對(duì)象獲取屬性值。 采用在每個(gè)數(shù)組元素上調(diào)用的回調(diào)函數(shù)以返回轉(zhuǎn)換。map()
此回調(diào)使用數(shù)組獲取每個(gè)對(duì)象的所有鍵。通過對(duì) 的另一次調(diào)用,它會(huì)遍歷每個(gè)鍵,獲取對(duì)象中該鍵的相應(yīng)值,并使用 JSON.stringify() 將其轉(zhuǎn)換為字符串。headermap()
此內(nèi)部調(diào)用最終將生成一個(gè)數(shù)組,其中包含數(shù)組中當(dāng)前對(duì)象的所有字符串化屬性值。map()
將對(duì)象轉(zhuǎn)換為屬性值數(shù)組后,將使用 join() 將數(shù)組轉(zhuǎn)換為 CSV 行。
因此,JSON 數(shù)組中的每個(gè)對(duì)象都會(huì)進(jìn)行此轉(zhuǎn)換,以生成存儲(chǔ)在原始示例中的變量中的 CSV 行列表。rowItems
為了生成最終的 CSV 輸出,我們將 和 組合成一個(gè)數(shù)組,使用擴(kuò)展語法 ()。headerString rowItems...
然后,我們?cè)诖藬?shù)組上調(diào)用 join(),并將字符串作為分隔符,以創(chuàng)建一個(gè)字符串,其中包含 CSV 標(biāo)頭,每個(gè) CSV 行位于單獨(dú)的行中。'\r\n'