利用純JS實(shí)現(xiàn)JSON轉(zhuǎn)CSV的技巧全攻略
引言
在數(shù)據(jù)處理和導(dǎo)出方面,JSON 和 CSV 格式是兩個(gè)常見(jiàn)的角色。JSON(JavaScript Object Notation)以其良好的可讀性和靈活性被廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ)和傳輸,而CSV(Comma-Separated Values)則因其簡(jiǎn)潔易讀、方便導(dǎo)入到各種表格軟件中而深受歡迎。今天,我們將介紹如何在純 JavaScript 中,利用開(kāi)源庫(kù) @json2csv/plainjs
輕松實(shí)現(xiàn)從 JSON 轉(zhuǎn)換到 CSV,幫助你高效處理數(shù)據(jù)。
一、什么是 @json2csv/plainjs?
@json2csv/plainjs
是 json2csv
的一種輕量版(純?cè)?JS 實(shí)現(xiàn)),無(wú)需依賴(lài)任何第三方庫(kù)或環(huán)境(比如 Node.js 特定模塊),非常適合瀏覽器或純 JS 環(huán)境下使用。
主要功能:
- 將 JSON 對(duì)象或數(shù)組轉(zhuǎn)換成 CSV 格式
- 支持自定義字段和格式
- 簡(jiǎn)單易用,無(wú)復(fù)雜配置
二、基礎(chǔ)用法:將簡(jiǎn)單 JSON 轉(zhuǎn)為 CSV
示例:轉(zhuǎn)換一組用戶(hù)數(shù)據(jù)
import { Parser } from '@json2csv/plainjs'; // 示例數(shù)據(jù) const myData = [ { name: 'John', age: 30, city: 'New York' }, { name: 'Jane', age: 25, city: 'Los Angeles' }, { name: 'Doe', age: 35, city: 'Chicago' } ]; // 基本轉(zhuǎn)換示例 try { const basicOpts = {}; const basicParser = new Parser(basicOpts); const basicCsv = basicParser.parse(myData); console.log('基本轉(zhuǎn)換結(jié)果:'); console.log(basicCsv); } catch (err) { console.error('基本轉(zhuǎn)換出錯(cuò):', err); }
輸出:
"name","age","city" "John",30,"New York" "Jane",25,"Los Angeles" "Doe",35,"Chicago"
說(shuō)明
parse()
方法將數(shù)組中的每個(gè)對(duì)象作為一行- 默認(rèn)會(huì)提取所有對(duì)象的所有鍵作為字段名
三、定制轉(zhuǎn)換:選擇特定字段
我們可以通過(guò) fields
選項(xiàng),指定輸出哪些字段,保證輸出內(nèi)容的可控性。
示例:只導(dǎo)出 name 和 email
import { Parser } from '@json2csv/plainjs'; const users = [ { name: 'Alice', age: 30, email: 'alice@example.com' }, { name: 'Bob', age: 25, email: 'bob@example.com' } ]; const customOpts = { fields: ['name', 'email'] }; const customParser = new Parser(customOpts); const csv = customParser.parse(users); console.log(csv);
輸出:
name,email Alice,alice@example.com Bob,bob@example.com
說(shuō)明
- 只提取配置中列出的字段,支持自定義順序
四、深入:使用復(fù)雜參數(shù)定制格式
@json2csv/plainjs
提供多種選項(xiàng),幫助你控制輸出格式。
1. 自定義字段標(biāo)題
import { Parser } from '@json2csv/plainjs'; const users = [ { name: 'Alice', age: 30, email: 'alice@example.com' }, { name: 'Bob', age: 25, email: 'bob@example.com' } ]; const fields = [ { label: '姓名', value: 'name' }, { label: '年齡', value: 'age' } ]; const customOpts = { fields }; const customParser = new Parser(customOpts); const csv = customParser.parse(users); console.log(csv);
輸出:
姓名,年齡 Alice,30 Bob,25
2. 添加換行符和其他格式控制
除了基本功能,你還可以通過(guò)選項(xiàng)調(diào)整字段分隔符、換行符等。
import { Parser } from '@json2csv/plainjs'; const users = [ { name: 'Alice', age: 30, email: 'alice@example.com' }, { name: 'Bob', age: 25, email: 'bob@example.com' } ]; const fields = [ { label: '姓名', value: 'name' }, { label: '年齡', value: 'age' } ]; const options = { fields, delimiter: ';', // 使用分號(hào)作為字段分隔符 eol: '\r\n' // 換行符使用 Windows 風(fēng)格 }; const customParser = new Parser(options); const csv = customParser.parse(users); console.log(csv);
五、實(shí)戰(zhàn)案例:導(dǎo)出嵌套JSON
假設(shè)你的 JSON 中包含嵌套對(duì)象,如何處理?
import { Parser } from '@json2csv/plainjs'; const data = [ { id: 1, name: 'Alice', address: { city: 'Beijing', street: 'Chao Yang' } }, { id: 2, name: 'Bob', address: { city: 'Shanghai', street: 'Pudong' } } ]; // 通過(guò)指定字段的路徑,將嵌套對(duì)象扁平化 const fields = [ { label: 'ID', value: 'id' }, { label: '名稱(chēng)', value: 'name' }, { label: '城市', value: 'address.city' }, { label: '街道', value: 'address.street' } ]; const customParser = new Parser({fields}); const csv = customParser.parse(data); console.log(csv);
輸出:
ID,名稱(chēng),城市,街道 1,Alice,Beijing,Chao Yang 2,Bob,Shanghai,Pudong
結(jié)語(yǔ)
到此這篇關(guān)于利用純JS實(shí)現(xiàn)JSON轉(zhuǎn)CSV的技巧全攻略的文章就介紹到這了,更多相關(guān)JavaScript JSON轉(zhuǎn)CSV內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS實(shí)現(xiàn)無(wú)限輪播無(wú)倒退效果
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)無(wú)限輪播無(wú)倒退效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JS中用三種方式實(shí)現(xiàn)導(dǎo)航菜單中的二級(jí)下拉菜單
我們?cè)谔詫?、搜狐等大型網(wǎng)站上都可以看到使用的一些二級(jí)下拉菜單,比如下面這張圖片。那么如何實(shí)現(xiàn)導(dǎo)航菜單欄中的二級(jí)下拉菜單呢?下面小編給大家分享JS中用三種方式實(shí)現(xiàn)導(dǎo)航菜單中的二級(jí)下拉菜單,感興趣的朋友一起看看吧2016-10-10innerHTML,outerHTML,innerTEXT三者之間的區(qū)別
innerHTML,outerHTML,innerTEXT三者之間的區(qū)別...2007-01-01微信小程序圖片自適應(yīng)實(shí)現(xiàn)解析
這篇文章主要介紹了微信小程序圖片自適應(yīng)實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01js實(shí)現(xiàn)數(shù)組冒泡排序、快速排序原理
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)數(shù)組冒泡排序、快速排序的原理,感興趣的小伙伴們可以參考一下2016-03-03