首页 > 编程语言 >如何在 JavaScript 中将 JSON 转换为 CSV

如何在 JavaScript 中将 JSON 转换为 CSV

时间:2022-09-02 10:33:22浏览次数:108  
标签:const JavaScript 120 JSON 数组 headerString CSV

如何在 JavaScript 中将 JSON 转换为 CSV

下面是我们如何在 JavaScript 中轻松地将 JSON 转换为 CSV:

 函数 jsonToCsv(项目){  
 const header = Object.keys(items[0]); 常量 headerString = header.join(','); // 在此处处理空值或未定义值  
 const replacer = (key, value) => value ?? ''; 常量 rowItems = items.map((row) =>  
 标题  
 .map((fieldName) => JSON.stringify(row[fieldName], replacer))  
 。加入(',')  
 ); // 连接标题和正文,并分成单独的行  
 const csv = [headerString, ...rowItems].join('\r\n'); 返回.csv;  
 } 常量对象 = [  
 { 颜色:'红色',最大速度:120,年龄:2 },  
 { 颜色:“蓝色”,最大速度:100,年龄:3 },  
 { 颜色:“绿色”,最大速度:130,年龄:2 },  
 ]; 常量 csv = jsonToCsv(obj); 控制台.log(csv);

这将是 CSV 输出:

 颜色,最大速度,年龄  
 “红色”,120,2  
 “蓝色”,100,3  
 “绿色”,130,2

了解步骤

我们创建了一个可重复使用的 jsonToCsv() 函数让我们将多个 JSON 字符串转换为 CSV。它需要一个包含对象的数组。每个对象将在 CSV 输出中占据一行。

我们在此函数中所做的第一件事是获取将用于 CSV 标头的所有键。我们希望数组中的所有对象都有相同的键,所以我们使用 对象.keys() 方法将键从第一个对象项中提取到数组中。

 常量对象 = [  
 { 颜色:'红色',最大速度:120,年龄:2 },  
 { 颜色:“蓝色”,最大速度:100,年龄:3 },  
 { 颜色:“绿色”,最大速度:130,年龄:2 },  
 ]; // { color: 'red', maxSpeed: 120, age: 2 }  
 控制台.log(obj[0]); // ['颜色','maxSpeed','年龄']  
 console.log(Object.keys(obj[0]));

拿到钥匙后,我们调用 加入() 数组上的方法将所有元素连接成 CSV 标头字符串。

 const header = ['color', 'maxSpeed', 'age']; const headerString = arr.join(','); console.log(headerString); // 颜色,最大速度,年龄

接下来,我们创建一个函数,该函数将作为回调传递给 替代品 的参数 JSON.stringify() 功能。该函数将处理 不明确的 或者 无效的 JSON 数组中对象的属性值。

 const obj = { prop1: '地球', prop2: undefined }; // 用空字符串 ('') 替换未定义的属性值  
 const replacer = (key, value) => value ?? ''; const str = JSON.stringify(obj, replacer); // {"prop1":"地球","prop2":""}  
 控制台.log(str);

然后我们使用 数组映射() 从每个对象获取属性值的方法。 地图() 接受一个在每个数组元素上调用的回调函数以返回一个转换。

此回调使用 标题 数组来获取每个对象的所有键。与另一个电话 地图() ,它遍历每个键,获取对象中该键的对应值,并使用将其转换为字符串 JSON.stringify() .

这种内在的呼唤 地图() 最终导致数组中当前对象的所有字符串化属性值的数组。

 const header = ['color', 'maxSpeed', 'age']; const row = { color: 'red', maxSpeed: 120, age: 2 }; const replacer = (key, value) => value ?? ''; 常量 rowItem = header.map((fieldName) =>  
 JSON.stringify(行[字段名],替换)  
 ); // 字符串化的属性值数组  
 控制台.log(rowItem); // [ '"红色"', '120', '2' ]

将对象转换为属性值数组后, 加入() 然后用于将数组转换为 CSV 行。

 ['"red"', '120', '2'].join(',') // -> "red",120,2

所以这个转换发生在 JSON 数组中的每个对象上,以生成一个 CSV 行列表,存储在 行项目 在我们原始示例中的变量。

为了生成最终的 CSV 输出,我们将 标头字符串 行项目 成一个数组,利用 传播语法 ( ... )。

 const headerString = ['color', 'maxSpeed', 'age']; const rowItems = ['"red",120,2', '"blue",100,3', '"green",130,2']; [headerString, ...rowItems];  
 /*  
 输出->  
 [  
 ['颜色','maxSpeed','年龄'],  
 '"红色",120,2',  
 '"蓝色",100,3',  
 '“绿色”,130,2'  
 ]  
 */

然后我们调用 加入() 在这个数组上 '\r\n' string 作为分隔符,创建一个带有 CSV 标题的字符串,并且每个 CSV 行位于单独的行中。

 const headerString = ['color', 'maxSpeed', 'age']; const rowItems = ['"red",120,2', '"blue",100,3', '"green",130,2']; console.log([headerString, ...rowItems].join('\r\n'));  
 /*  
 颜色,最大速度,年龄  
 “红色”,120,2  
 “蓝色”,100,3  
 “绿色”,130,2  
 */

最初发表于 编码beautydev.com

JavaScript 所做的每一件疯狂的事

关于 JavaScript 的细微警告和鲜为人知的部分的迷人指南。

注册 并立即获得免费副本。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11168/29580210

标签:const,JavaScript,120,JSON,数组,headerString,CSV
From: https://www.cnblogs.com/amboke/p/16648956.html

相关文章

  • JavaScript 在线课程
    JavaScript在线课程JavaScript(JS)是一种动态的、面向对象的、基于原型的编程语言。它是ECMAScript标准的实现。JS编程语言常用于创建网页脚本,允许客户端(终端用户......
  • 使用 CerealBox 将 AWS DynamoDB JSON 序列化为 Python dict
    使用CerealBox将AWSDynamoDBJSON序列化为Pythondict在这里,我们讨论了一个快速演练和参考代码,用于为您的下一个AWS应用程序简化DynamoDBJSON序列化过程。绒......
  • 2022 年 8 月 JavaScript 新闻和更新
    2022年8月JavaScript新闻和更新向所有JavaScript崇拜者致敬!很遗憾夏天结束了,但我们准备了一份最新的JavaScript新闻摘要来让你振作起来。今天,您将熟悉我们全新......
  • Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON
    SwiftPractice#172Swift取得网页资料并制作台湾乡镇气象连结JSON上一篇解决了使用GoogleAdmob套件所产生的Link问题,让广告可以顺利显示。[SwiftPractice#171G......
  • envi5.3打开失败JSON_PARSE: Invalid string, no closing '"'
    发现破解好的ENVI5.3崩溃了,错误如下: ---------------------------Warning---------------------------JSON_PARSE:Invalidstring,noclosing'"'---------------......
  • # JavaScript 函数
    目录JavaScript函数函数概念函数的使用函数的使用函数的封装函数的参数形参和实参形参和实参个数不匹配问题return终止函数return只能返回一个值JavaScript函数函数概......
  • JavaScript高级程序设计(第3版) pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1rWAAzlVrJLfwXEn_SWtBWw点击这里获取提取码JavaScript高级程序设计本书从最早期Netscape浏览器中的JavaScript开始讲起,直到......
  • Flask 学习-31.flask_jwt_extended 验证token四种方headers/cookies/json/query_stri
    前言用户携带授权token访问时,其jwt的所处位置列表,默认是在请求头部headers中验证。可以通过JWT_TOKEN_LOCATION进行全局配置,设置token是在请求头部,还是cookies,还是json,......
  • 如何在 Javascript 中清空数组?
    如何在Javascript中清空数组?在使用JavaScript编程时,程序员可能需要在许多情况下将数组设为空,一个非常常见的问题是如何清空数组并删除其所有元素!顺便说一句,这是最受......
  • JavaScript 中的构造函数和新的运算符
    JavaScript中的构造函数和新的运算符ConstructorFunctionsandthenewOperator你好,我是Gibson,在这篇博客中,我们将学习构造函数和新的运算符。我们可以使用构造函......