Skip to content

Json 格式 #66

@techiall

Description

@techiall

Json 格式

JSONJavaScript 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 ,以 数字结束。

https://www.json.org/img/number.png

https://www.json.org/img/string.png

因此,我们可以确定,下面的这些,也是 JSON。

1234

// or

"admin"

// or

1.24343

// or
1.34e-1

// or

"admin\""

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions