前言
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也行。
至此,用法介绍完结。