Skip to content

Json 格式 #66

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\""

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions