JSON5

json5 语法

个人感觉 Json5 更适合搭配 js 使用,它把 json 改造的更像 js 的对象了。

comment:注释

JSON5允许在数据中添加注释。

{
    // 单行注释
    /*
        多行注释
    */
}

whitespace:空白

Code Points
json
json5
Description

U+0009

Horizontal tab

U+000A

Line feed

U+000B

Vertical tab

U+000C

Form feed

U+000D

Carriage return

U+0020

Space

U+00A0

Non-breaking space

U+2028

Line separator

U+2029

Paragraph separator

U+FEFF

Byte order mark

Unicode Zs category

Any other character in the Space Separator Unicode category

string:字符串

  1. 字符串可以用单引号了

  2. 字符串可以多行了

{
  // 字符串值允许使用单引号括起来
  singleQuotes: 'I can use "double quotes" here',

  // 字符串值允许包含字符转义序列
  lineBreaks: "Look, Mom!\
  No \n's!",
}

number:数值

  1. 支持 16 进制,但是 8 进制和 2 进制不行

  2. 可以表示无穷和 Nan

{
  keya: 0xFF, // 十六进制数字
  //keyb: 0o377, // 八进制数字
  //keyc: 0b1111, // 二进制数字
  positiveInfinity: Infinity,
  negativeInfinity: -Infinity,
  notANumber: NaN,
}

value:值

{
    birthdate: new Date("1990-01-01"), // 日期对象
}

object:对象

  1. 尾随逗号

{
    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,
  "ლ(ಠ益ಠლ)": "为什么我们不能成为朋友?",

  // 键名允许重复,后面的会覆盖前面的
  重复键: "第一个值",
  重复键: "第二个值", // 这将覆盖第一个值
}

最后更新于

这有帮助吗?