-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Json 格式
JSON(JavaScript Object Notation,JavaScript物件表示法,读作/ˈdʒeɪsən/)是一種由道格拉斯·克羅克福特構想和設計、輕量級的資料交換語言,该语言以易於讓人閱讀的文字為基礎,用来传输由属性值或者序列性的值组成的数据对象。儘管JSON是JavaScript的一個子集,但JSON是獨立於語言的文本格式,並且採用了類似於C語言家族的一些習慣。
上面这段介绍来自 维基百科,下面是我们常见的 JSON 形式,形如一个 key,对应 value。
这是你熟悉的 JSON 格式。
{ "face": "😂" }
// or
{ "face": "\uD83D\uDE02" }
// or
{
"firstName": "John",
"lastName": "Smith",
"sex": "male",
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}前几天的一个契机,在我使用 new ObjectMapper().writeValueAsString() (JackJson)这个方法的时候,这个方法允许传入一个 Object 对象。
当时我传入了一个 Long 类型的对象,编译期间我意识到可能会报错,但是运行的时候居然没有报错!
这有点颠覆了我对 JSON 的认识,我用了在线 JSON 转换,传入了单个数值,字符串,都没提示报错。
然后去找了一下 JSON 规范。https://www.json.org/json-en.html
解决我的疑惑的是下面的两张图,JSON 规定了他解析的过程,下面两张图是字符串和数值解析过程。
-
字符串由
"开始,中间如果有",需要转义, 以"结束。 -
数值由
-(可选)开始,包含数字,小数点和e/E,以数字结束。
因此,我们可以确定,下面的这些,也是 JSON。
1234
// or
"admin"
// or
1.24343
// or
1.34e-1
// or
"admin\""

