json2csv是一種方便快捷的將JSON數據轉換為CSV格式的工具。它支持豐富的選項和自定義列名,非常易於使用。在本文中,我們將從以下幾個方面,對json2csv進行詳細的闡述:
一、json2csv用法
使用json2csv轉換JSON數據非常簡單。首先安裝json2csv:
npm install json2csv
安裝完成之後,我們就可以在項目中使用json2csv。下面是一個簡單的示例:
const json2csv = require('json2csv').parse;
const data = [
{
name: 'John Doe',
age: 29,
gender: 'male'
},
{
name: 'Jane Doe',
age: 32,
gender: 'female'
}
];
const fields = ['name', 'age', 'gender'];
const csv = json2csv(data, { fields });
console.log(csv);
/* 輸出:
"name","age","gender"
"John Doe",29,"male"
"Jane Doe",32,"female"
*/
在上面的示例中,我們首先定義了一個包含兩個對象的數據數組,每個對象都包含了’name’、’age’、’gender’這幾個屬性。然後通過定義一個包含列名的字符串數組’fields’,我們將其作為參數傳遞給json2csv。最後,我們將轉換後的CSV數據輸出到控制台。
二、json2csv不展示csv
默認情況下,json2csv不會自動展示生成的CSV文件。而是將其作為字符串返回。如果想要自動展示CSV文件,在Node.js中可以使用fs模塊實現:
const fs = require('fs');
const json2csv = require('json2csv').parse;
const data = [
{
name: 'John Doe',
age: 29,
gender: 'male'
},
{
name: 'Jane Doe',
age: 32,
gender: 'female'
}
];
const fields = ['name', 'age', 'gender'];
const csv = json2csv(data, { fields });
fs.writeFile('data.csv', csv, function(err) {
if (err) throw err;
console.log('CSV file saved.');
});
在上面的示例中,我們使用fs.writeFile()方法將轉換後的CSV數據寫入到’data.csv’文件中,並在回調函數中輸出’CSV file saved.’消息。
三、json2csv列名選取
json2csv可以根據需求自定義列名。舉個例子:
const json2csv = require('json2csv').parse;
const data = [
{
name: 'John Doe',
age: 29,
gender: 'male'
},
{
name: 'Jane Doe',
age: 32,
gender: 'female'
}
];
const fields = ['name', 'age', { label: 'Gender', value: 'gender' }];
const csv = json2csv(data, { fields });
console.log(csv);
/* 輸出:
"name","age","Gender"
"John Doe",29,"male"
"Jane Doe",32,"female"
*/
在這個示例中,我們將’gender’列的名稱更改為’Gender’,並將其作為自定義對象傳遞給’fields’數組中。這個名稱將顯示在CSV文件的標題行中。此外,您還可以使用’value’屬性指定’fields’數組中的列名映射到JSON對象上的哪個屬性。
四、json2csv時間格式化
有時候,在JSON數據中存在日期類型的數據,我們需要將其轉換成需要的日期格式。json2csv支持使用datetime模塊來轉換日期時間類型。
const json2csv = require('json2csv').parse;
const datetime = require('node-datetime');
const data = [
{
name: 'John Doe',
birthdate: new Date('1990-01-01T00:00:00Z')
},
{
name: 'Jane Doe',
birthdate: new Date('1987-06-15T00:00:00Z')
}
];
const fields = ['name', {
label: 'Birthdate',
value: row => {
const dt = datetime.create(row.birthdate);
return dt.format('Y-m-d');
}
}];
const csv = json2csv(data, { fields });
console.log(csv);
/* 輸出:
"name","Birthdate"
"John Doe","1990-01-01"
"Jane Doe","1987-06-15"
*/
在這個示例中,我們使用’datetime’模塊將日期對象轉換成我們需要的格式。我們定義了一個自定義列’time’,並使用’value’屬性指定了日期的格式。結果中,我們將每個對象的日期格式化為’Y-m-d’的格式。
五、json2csv非UTF-8編碼轉換
如果需要將CSV文件轉換成其他編碼,也是非常方便的。只需要在模塊導入後設置json2csv編碼:
const json2csv = require('json2csv').parse;
const data = [
{
name: 'John Doe',
age: 29,
gender: 'male'
},
{
name: 'Jane Doe',
age: 32,
gender: 'female'
}
];
const fields = ['name', 'age', 'gender'];
const csv = json2csv(data, {
fields,
encoding: 'gb2312'
});
console.log(csv);
以上示例中,我們將CSV編碼設置為’gb2312’。你還可以設置其他編碼類型,如果需要將CSV文件轉換為Unicode編碼,還可以將編碼字符串設置為’utf-8-sig’。
六、總結
在本文中,我們就對json2csv這個工具進行了全面的介紹。我們從json2csv的用法入手,介紹了如何將JSON數據轉換為CSV文件。然後,我們重點介紹了json2csv的一些高級用法,比如如何自定義CSV列名,格式化日期時間,轉換編碼等等。希望這些介紹對大家有所幫助。
原創文章,作者:OTIUB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/334089.html