C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON
来源:公众号《前端全栈开发者》(ID:by-zhangbing-dev)
将CSV转换为JSON是一项需要做很多工作的任务,在本文中,我将研究如何使用 csvtojson
模块将CSV转换为JSON。
CSV简介
CSV即Comma Separate Values,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本(NOTE)来开启,再则先另存新档后用EXCEL开启,也是方法之一。
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用,经常用来作为不同程序之间的数据交互的格式,最广泛的应用是在程序之间转移表格数据。
来自搜狗百科:https://baike.sogou.com/v249053.htm?fromTitle=CSv
安装
csvtojson
可作为NPM模块使用。我们可以运行以下命令进行安装:
npm i csvtojson
该软件包可与浏览器和Node.js一起使用。
基本使用
我们可以从文件中获取CSV并将其转换为JSON,也可以从字符串中获取CSV并执行相同的操作。
例如,我们可以从文件中获取CSV并将其转换为JSON,如下所示:
person.csv
first_name,last_name
john,smith
jane,smith
index.js
const csvFilePath = 'person.csv'
const csv = require('csvtojson');
(async () => {const jsonObj = await csv().fromFile(csvFilePath)console.log(jsonObj);
})();
在上面的代码中,我们调用了 csv
函数,该函数使用带有文件路径的 fromFile
方法返回一个对象。
然后,当我们像上面一样登录 jsonObj
时,我们得到:
[ { first_name: 'john', last_name: 'smith' },{ first_name: 'jane', last_name: 'smith' } ]
我们还可以将CSV从字符串解析为JSON。为此,我们可以编写以下代码:
const csv = require('csvtojson');
const csvStr = `first_name,last_name
john,smith
jane,smith`;
(async () => {const jsonObj = await csv().fromString(csvStr)console.log(jsonObj);
})();
在上面的代码中,我们有 csvStr
,其中包含存储在字符串中的相同CSV内容。
然后我们调用 fromString
而不是 fromFile
来获取CSV内容,并使用解析后的数据解析返回 Promise。
因此,我们得到与第一个示例相同的结果。
异步处理来自CSV URL的每一行
我们可以使用 subscribe
方法逐行解析CSV字符串。例如,我们可以如下使用它:
const csv = require('csvtojson');
const csvFilePath = 'person.csv'
csv()
.fromFile(csvFilePath)
.subscribe((json) => console.log(json), () => console.log('error'), () => console.log('success')
);
在上面的代码中,我们调用了 fromFile
方法,但是我们在后面调用了 subscribe
方法,而不是从promise中获取解析后的值。
然后,我们将解析的值一次只获取一行,而不是将其全部打包在一个数组中。
转换为CSV行
我们还可以用 subscribe
方法和 'line'
输出选项一次一行地获得原始CSV行。
例如,我们可以调用以下代码:
const csv = require('csvtojson');
const csvFilePath = 'person.csv'
csv({ output: "line" })
.fromFile(csvFilePath)
.subscribe((csvLine) => console.log(csvLine))
然后我们得到:
john,smith
jane,smith
从控制台日志输出。
选项配置项
我们传递给 csv
函数的对象可以采用以下选项:
- output——要转换的格式。它可以是
'json'
,这是默认的,'csv'
,这是一个csv行,或者'line'
,它将csv转换成一个csv行字符串。 - delimiter——用于分隔列的分隔符。
'auto'
应该是未知值。 - quote——如果列中有定界符,则可以使用引号字符将列内容括起来,这样,
'hello,world'
之类的文本就不会被视为包含在两列中。 - trim——如果要去除空格则为
true
,否则为false
。 - checkType——打开和关闭是否检查字段类型。
- ignoreEmpty——忽略CSV列中的空值。
- noheader——如果我们解析的CSV中没有标题,则返回
true
。 - headers——一个用于指定CSV数据标题的数组。如果为
false
,则此值将覆盖CSV标头行。 - flatKeys——不将标题字段中的
.
和[]
解释为嵌套对象。默认为false
。 - maxRowLength——CSV行可以包含的最大字符。
- checkColumn——检查行的列号是否与标题相同。
- eol——要检查的行尾字符。
- escape——用引号引起来的转义字符。默认为双引号。
- includeColumns——正则表达式,包含列的模式。
- ignoreColumns——带有模式的正则表达式,可忽略的列。
- colParser——一个JSON对象来重写如何解析列。例如
{ foo : 'number'}
将把foo
字段解析为一个数字。 - alwaysSplitAtEOL——布尔值,指示是否按行末尾分割每行。
- nullObject——布尔值,指示我们是否保持
null
。 - downstreamFormat——选项设置下游所需的JSON数组格式。解析为CSV行可以为
'line'
,向下游编写完整的JSON数组可以为'array'
。 - needEmitAll——如果调用
.then
或使用await
,则解析器将生成JSON结果。
结束
使用 csvtojson
Node包,将CSV解析为JSON很容易。
它逐行返回一个Promise或发送解析过的CSV,这样我们就可以用自己喜欢的方式处理它们。
解析是异步完成的,因此性能不会成为问题。
C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON相关推荐
- C# json解析字符串总是多出双引号_python小课堂25 - 你真的了解JSON嘛?
python小课堂25 - 你真的了解JSON嘛? 前言 原谅我标题党了一波,哈哈哈哈!其实今天这篇文章算是题外番了,为什么这么说呢?因为JSON这个词,在当今的web环境下,作为一种最常使用的数据格 ...
- C# json解析字符串总是多出双引号_一篇长文带你在python里玩转Json数据
Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的. ...
- C# json解析字符串总是多出双引号_【c#资料】爬虫 Jumony-html 解析
添加DLL IDE是Visual Studio 2013,我是在NugGet中搜索,并添加到项目中. 2. Jumony的常见用法 从网站获取html代码,将html字符串分析为标准的文档对象模型(D ...
- C# json解析字符串总是多出双引号_Python小白必备知识:Python字符串详解
若干个字符的集合就是一个字符串(String).Python 中的字符串必须由双引号" "或者单引号' '包围,具体格式为: "字符串内容" '字符串内容' 字 ...
- C# json解析字符串总是多出双引号_json从立地到成佛
本文原创作者bigsai(同公众号),本文以浅显易懂的方式给大家讲解自己所认知的json,如果有错误或者不准确地方还请大家给出指正,另外本文以关卡课程的方式在博学谷也是免费开放的,大家也可通过关卡方式 ...
- 解决特殊字符引起json解析错误--单引号、双引号转义
解决特殊字符引起json解析错误–单引号.双引号转义 这几天在做一个题库管理,遇到了一个问题,将后台的json数据传到前台用parse解析时,出现了一个错误: Uncaught SyntaxError ...
- Word处理控件Aspose.Words功能演示:在 Java 中将 DOCX 转换为 JSON
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...
- IntelliJ idea——》JSON字符串,自动转义双引号
版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者. https://blog.csdn.net/weixin_43453386/article/detai ...
- 字符串处理--去除首尾双引号
项目场景: 使用shell脚本处理带有双引号的文本 问题描述: 数据示例 "{""_index"":""uke_device_op ...
最新文章
- Android Fragment 调用宿主Activity 里面的方法
- retina 负样本回归增强loss
- 树莓派AI视觉云台——7、树莓派系统备份
- 有感而发 - 日新月异的SAP开发技术
- 如何接收串口数据_UART IDLE 中断使用接收不定长串口数据
- python pandas csv getitem_Python调用pandas 读csv档时出现了错误
- 关于一个跨域的小问题
- kindeditor编辑器
- rcmd–App Switcher for Mac快速切换应用程序
- WCF服务离线操作与消息队列MSMQ(转)
- CSS优先级、引入方式、Hack
- 拉格朗日函数最优化问题
- jboss forge整合 hibersap
- java模拟器怎么调中文_电脑java模拟器(javagame模拟器)
- 012_SSS_ Improving Diffusion Model Efficiency Through Patching
- 电脑蓝屏了怎么办修复,电脑蓝屏解决修复方法
- 输入四个整数,输出其中最小的数
- 网格电流例题(cubic resistor|立方网格电流)
- 【文件操作专题】java 实现多张图片合成PDF
- SDN 与 Mininet 概述