techiall / Blog

🍋 [My Blog] See discussions
https://github.com/techiall/Blog/discussions
MIT License
8 stars 1 forks source link

Json 格式 #66

Open techiall opened 4 years ago

techiall commented 4 years ago

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 规定了他解析的过程,下面两张图是字符串和数值解析过程。

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\""
techiall commented 3 years ago

事情起源是因为 Windows Terminal 的配置文件(settings.json)中,包含了注释(以 // 开头)

就很好奇这是 JSON 的什么新特性。


Question: JSON 中如何加入注释?

Solution: 使用 JSON5

Question: JSON5 文件后缀?

Answer: json / json5


在 IDEA 中启用 JSON5,https://www.jetbrains.com/help/idea/json.html