json5 syntax
Links
- json5 2018标准:https://spec.json5.org/
- json5 官网:https://json5.org/
- 中文的简洁易懂的 blog:https://blog.csdn.net/github_38727595/article/details/137816175
- 另一个blog:http://wxnacy.com/2018/02/18/json5/
- json5 在线解析:https://www.json.cn/json5/
个人感觉 Json5 更适合搭配 js 使用,它把 json 改造的更像 js 的对象了。
comment:注释
{% hint style="info" %}
JSON5允许在数据中添加注释。
{
// 单行注释
/*
多行注释
*/
}
whitespace:空白
{% hint style="info" %}
更多的空白
https://spec.json5.org/#white-space
| Code Points | json | json5 | Description |
|---|---|---|---|
| U+0009 | true | true | Horizontal tab |
| U+000A | true | true | Line feed |
| U+000B | false | true | Vertical tab |
| U+000C | false | true | Form feed |
| U+000D | true | true | Carriage return |
| U+0020 | true | true | Space |
| U+00A0 | false | true | Non-breaking space |
| U+2028 | false | true | Line separator |
| U+2029 | false | true | Paragraph separator |
| U+FEFF | false | true | Byte order mark |
| Unicode Zs category | false | true | Any other character in the Space Separator Unicode category |
string:字符串
- 字符串可以用单引号了
- 字符串可以多行了
{
// 字符串值允许使用单引号括起来
singleQuotes: 'I can use "double quotes" here',
// 字符串值允许包含字符转义序列
lineBreaks: "Look, Mom!\
No \n's!",
}
number:数值
- 支持 16 进制,但是 8 进制和 2 进制不行
- 可以表示无穷和 Nan
{
keya: 0xFF, // 十六进制数字
//keyb: 0o377, // 八进制数字
//keyc: 0b1111, // 二进制数字
positiveInfinity: Infinity,
negativeInfinity: -Infinity,
notANumber: NaN,
}
value:值
- 可以直接表示日期,不用写成字符串了(这个应该只能在 js 里边这样写)
- 其他的都和 json 一样
{
birthdate: new Date("1990-01-01"), // 日期对象
}
object:对象
- 尾随逗号
{
year: 2000,
}
Demo
{
// 单行注释:
// "key1": "str",
// 多行注释:
/* "key2": "str",
"key3": "str" */
// key 可以不使用引号
key1: "str",
// key 允许使用单引号
key2: "str",
// 字符串值允许使用单引号括起来
singleQuotes: 'I can use "double quotes" here',
// 字符串值允许包含字符转义序列
lineBreaks: "Look, Mom!\
No \n's!",
arr1: [1, 2], // 可以有尾随逗号
arr2: { a: "str", b: "str" }, // 对象也可以有尾随逗号
// 数字可以是十六进制,注意是 0xff5643 不是 #ff5643
hexadecimal: 0xff5643,
// 数字可以带有 前导小数点 后导小数点:
leadingDecimalPoint: .35, andTrailing: 35.,
// 允许正负号
income: +3000.0, amount: -500.0,
// 允许使用 NaN 和 Infinity
positiveInfinity: Infinity,
negativeInfinity: -Infinity,
notANumber: NaN,
// Unicode 字符可以在标识符中使用
π: 3.141592653589793,
"ლ(ಠ益ಠლ)": "为什么我们不能成为朋友?",
// 键名允许重复,后面的会覆盖前面的
重复键: "第一个值",
重复键: "第二个值", // 这将覆盖第一个值
}