JSON(JavaScript Object Notation)壳贪,一種輕量級(jí)的數(shù)據(jù)交換格式直撤,源于JavaScript祖凫,為ECMAScript的一個(gè)子集琼蚯。其易于閱讀和編寫(xiě)酬凳、易于編碼和解析等特性惠况,已被廣泛應(yīng)用于尤其配置及http下的序列化等眾多方面。
json語(yǔ)法不支持注釋?zhuān)恢С肿址畵Q行宁仔,所有的key
都必須雙引號(hào)稠屠,末尾不能有多余的逗號(hào)...等等,一大堆極其嚴(yán)格的要求和不支持的功能翎苫。
JSON5 和 JSON 的關(guān)系就像 ECMAScript 5 和 ECMAScript 3 的關(guān)系权埠。JSON5 同樣是 ECMAScript 5 的嚴(yán)格的子集。
JSON5是對(duì)JSON的擴(kuò)展煎谍,其目的是能夠讓人們(程序猿)更加容易的閱讀和編寫(xiě)攘蔽。
按照官方介紹,JSON5相對(duì)于JSON增加了以下特性(優(yōu)勢(shì)) summary-of-features:
這完全就是我想要的呐粘!安利給大家满俗。
Json5 語(yǔ)法說(shuō)明
JSON5
是對(duì)JSON
的擴(kuò)展转捕,讓人可以更容易手工編寫(xiě)和維護(hù)。
JSON5
的特性如下:
對(duì)象 Objects
- key值允許沒(méi)有雙引號(hào) Object keys may be an ECMAScript 5.1 IdentifierName.
{
code:1,
msg:"Hello"
}
- 允許有多余的逗號(hào)結(jié)尾 Objects may have a single trailing comma.
{
code:1,
msg:"Hello",
}
- key值可以使用單引號(hào)來(lái)包裹 The key value can be wrapped in single quoted.
{
$name:"HellO",
code:1,
msg:'Hello',
}
數(shù)組 Arrays
- 允許有多余的逗號(hào)結(jié)尾
[1, 2, 3,]
字符串 Strings
- 允許使用單引號(hào)包裹字符串 Strings may be single quoted.
{
$name:'HellO',
code:1,
msg:'Hello',
}
- 字符串可以換行唆垃,可以多行 Strings may span multiple lines by escaping new line characters
{
$name:'HellO',
$desc:"hello
world!
haha!
",
code:1,
msg:'Hello',
}
- 字符串允許使用轉(zhuǎn)義字符 Strings may include character escapes.
{
code:1,
msg:"Hello\nWorld\n!",
}
數(shù)字 Numbers
- 數(shù)字可以用十六進(jìn)制表示 Numbers may be hexadecimal.
{
code:0xFF
}
- 允許使用小數(shù)點(diǎn)開(kāi)頭或結(jié)尾的數(shù)字五芝,例如:
.007
,7.
Numbers may have a leading or trailing decimal point.
{
a:.007,
b:7.
f:-.32e-3
}
- 數(shù)字可以使用正無(wú)窮大辕万、負(fù)無(wú)窮大枢步、和Nan 來(lái)表示, Numbers may be IEEE 754 positive infinity, negative infinity, and NaN.
{
p:Infinity,
n:-Infinity,
b:NaN
}
- 數(shù)字前面可以有一個(gè)正號(hào)
+
Numbers may begin with an explicit plus sign. { a:+10 }
注釋 Comments
- 支持單行注釋和多行注釋 Single and multi-line comments are allowed.
{
// code表示結(jié)果代碼
code:1
msg:"返回結(jié)果說(shuō)明"
/*
json5的多行注釋
真是好爽啊,
完全就是為Panda api而設(shè)計(jì)的
*/
}
允許多余的空白符 White Space
- 允許在任何在json5相關(guān)符號(hào)之前和之后都可能出現(xiàn)多余的空白符渐尿。 Additional white space characters are allowed. 支持的空白符如下:
Code Points 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
官方相關(guān)說(shuō)明介紹:
https://github.com/json5/json5?github.com
經(jīng)典前端面試題每日更新醉途,歡迎參與討論,地址:https://github.com/daily-interview/fe-interview砖茸。