当前位置:网站首页>关于NodeJS中JSON5的相关配置和使用
关于NodeJS中JSON5的相关配置和使用
2022-04-23 14:05:00 【森之千手】
前言
JSON5是JSON的一个扩展子集。因此它完全兼容老JSON,并且还有自己独有的特性:
- 支持注释
- 不强求双引号,可以使用单引号
- 键值对的键可以不用双引号括起来
- 允许最后一个元素还可以跟加逗号
举个例子,正常的json长这个样子:
[
{
"name": "Frank",
"age": 16,
"gender": "male",
"isAdult": false
},
{
"name": "Bob",
"age": 22,
"gender": "male",
"isAdult": true
}
]
使用json5后就变成了这个样子:
/*这是一个json5测试*/
[
{
name: "Frank",//姓名
age: 16,//年龄
gender: "male",
isAdult: false
},
{
name: "Bob",
age: 22,
gender: "male",
isAdult: true
},
]
这样就极大扩展了JSON的可读性。
如何使用
下面就来讲讲如何在一个NodeJS项目里面使用JSON5。
1、安装JSON5的依赖
npm install json5 --save
2、新建后缀名为json5的文件,例如我们新建一个‘tt.json5’
往里面填入上述内容
3、读取
我们安装的json5实际上也有parse和stringify两个方法,这两个方法,对于js开发的同学来说,再熟悉不过了。其实我们更常用的是parse这个反序列化方法。stringify的话,用自带的JSON也能实现。
import parse = require('./parse')
import stringify = require('./stringify')
export {
parse, stringify}
nodeJS里面可以使用自带的fs进行读文件:
const fs=require('fs')
const JSON5 =require('json5')
fs.open('./tt.json5','r+',(err,d)=>{
fs.readFile('./tt.json5','utf-8',(err,data)=>{
console.log(JSON5.parse(data))
})
})
从文件读出来的是string,所以我们调用parse方法进行反序列化。
如果你不想用require,反而想用import引入,也行。
(1)如果node的版本小于13
准确来说,是小于13.2.0的话,需要自行安装babel转码,相关配置参考:
Node.js 使用 Babel 完美配置 ES6+
(2)如果node版本大于13
需要在package.json里面的含有name属性(一般为第一个)的object里增加
"type": "module"
否则会报:
SyntaxError: Cannot use import statement outside a module
现在可以愉快地引入了:
import * as fs from 'fs'
import JSON5 from 'json5'
fs.open('./tt.json5','r+',(err,d)=>{
console.log(d)
fs.readFile('./tt.json5','utf-8',(err,data)=>{
console.log(JSON5.parse(data))
})
})
注意:
import JSON5 from 'json5'
这里的JSON5相当于你取了个别名,你就算写成AA也行。
至此,用法介绍完结。
版权声明
本文为[森之千手]所创,转载请带上原文链接,感谢
https://blog.csdn.net/cjs1534717040/article/details/122209966
边栏推荐
- Switch usage (wechat applet)
- nodejs通过require读取本地json文件出现Unexpected token / in JSON at position
- postman批量生产body信息(实现批量修改数据)
- 微信小程序通过低功耗蓝牙设备进行定位及测距(二)
- Nacos+AspnetCore+Ocelot实战编码
- findstr不是内部或外部命令解决方法
- Restful WebService和gSoap WebService的本质区别
- linux MySQL数据定时dump
- Autumn recruitment in 2021, salary ranking No
- 室内外地图切换(室内基于ibeacons三点定位)
猜你喜欢
帆软报表设置单元格填报以及根据值的大小进行排名方法
Promtail + Loki + Grafana 日志监控系统搭建
postman批量生产body信息(实现批量修改数据)
微信小程序进行蓝牙初始化、搜索附近蓝牙设备及连接指定蓝牙(一)
Indoor and outdoor map switching (indoor three-point positioning based on ibeacons)
Nifi 快速安装及文件同步操作
帆软调用动态传参的方法,在标题中设置参数
Program compilation and debugging learning record
关于pthread多线程一些好文章
Nacos+AspnetCore+Ocelot实战编码
随机推荐
RobotFramework 之 公共变量
基于ibeacons签到系统
sql中出现一个变态问题
leetcode--977. Squares of a Sorted Array
mysql新表,自增id长达20位,原因竟是......
PyMySQL
封装logging模块
FBS(fman build system)打包
VsCode-Go
Jira截取全图
New关键字的学习和总结
STM32 learning record 0007 - new project (based on register version)
Subscription number development of wechat applet (message push)
微信小程序基于udp协议与esp8266进行通信
DDT+Excel进行接口测试
DeepinV20安装Mariadb
基于CM管理的CDH集群集成Phoenix
修改ddt生成的测试用例名称
Program compilation and debugging learning record
Can I compile the header file and source file of the template separately