当前位置:网站首页>关于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
边栏推荐
猜你喜欢
关于密匙传递的安全性和数字签名
Three point positioning based on ibeacons (wechat applet)
As a junior college student, I studied hard in closed doors for 56 days, won Ali offer with tears, five rounds of interviews and six hours of soul torture
Basic knowledge learning record
POI operation word template replaces data and exports word
微信小程序进行蓝牙初始化、搜索附近蓝牙设备及连接指定蓝牙(一)
sql中出现一个变态问题
Wechat applet obtains login user information, openid and access_ token
DeepinV20安装Mariadb
Jmeter安装教程以及我遇到的问题的解决办法
随机推荐
centOS下mysql主从配置
微信小程序通过低功耗蓝牙设备进行定位及测距(二)
Wechat applet communicates with esp8266 based on UDP protocol
帆软中需要设置合计值为0时,一整行都不显示的解决办法
按实际取,每三级分类汇总一次,看图知需求
微信小程序的订阅号开发(消息推送)
Nifi 快速安装及文件同步操作
帆软实现分页时第一行和最后两行冻结方式
Lin Lin, product manager of Lenovo: network failure of local network operator in Tianjin. The background server of Zui system can't work normally for the time being
数据库DbVisualizer Pro报文件错误,导致数据连接失败
leetcode--357. Count the number of different figures
基于ibeacons三点定位(微信小程序)
多重继承虚基类习题
关于密匙传递的安全性和数字签名
DeepinV20安装Mariadb
gzip和gunzip 解压参数详解
关于stream流,浅记一下------
Programming travel function
Program compilation and debugging learning record
Mock测试