回覆列表
  • 1 # 梁三跳

    現有答案多數認為是利於parse。

    不過因為key出現的位置是限定的,即使允許不加引號,對parse的影響也沒有那麼大,最麻煩的不過就是要排除掉保留字。再比如不允許結尾逗號,從parse角度來說也並沒有什麼站得住腳的道理。

    歸根到底,JSON為什麼這麼設計(得如此反人類),得問Douglas Crockford。這裡我只給出我的一個猜測。眾所周知,DC這個人比較opinionated,或者說比較古板,如果一個東西有多種寫法,他一定只選擇其中一種。顯然,一定要選擇的話,你只能選擇帶有引號,否則無法表達所有可能的key。

    至於json為何定義是雙引號而不是單引號,那是因為json只是一門技術,在諸多語言裡自己實現的時候支援的不同,有得單引號,有得雙引號,有得可以不加符號。但是有一點卻是共性,那就是雙引號能在絕大多數平臺一定能得到相容,這麼說樓主可明白了?

  • 2 # 網路圈

    JSON對於開發人員而言一點也不陌生,雖說我們經常接觸JSON,但是大家真的瞭解JSON嗎?我看未必,很多同學經常搞不清楚JSON的Key到底要不要用雙引號括起來,感覺在某些場景下JSON的Key加不加雙引號似乎都不影響使用。其實,事情並非這麼簡單。

    JSON規範

    JSON它是一種輕量級的資料交換格式,它是Key/Value鍵值對形式出現的,更多用於資料交換場景,它相當的簡潔明瞭。

    它的語法規則是:

    花括號表示物件

    方括號表示陣列

    資料由半形逗號分隔

    鍵/值對組合中,鍵名要以雙引號("")括起來,然後使用冒號(:)分隔Key和Value

    JSON和JS是有關係的

    JSON其實是JS物件的字串表示,通俗的說就是用一段字串表示JS物件的方法,JSON本質上就是一個字串。

    1、我們看下JS物件是什麼樣的,如下程式碼:

    var obj={name:"張三",age:20};

    JS物件中的字面量(比如上面程式碼中的name和age)可以不用雙引號括起來。

    2、JSON只是字串,如下程式碼:

    var json="{"name":"張三","age":20}";

    綜上,JSON語法規定了Key必須要用雙引號括起來,我們日常在JS中使用的看上去像JSON的Key沒有加雙引號是因為它是JS物件字面量,而不是JSON。

  • 中秋節和大豐收的關聯?
  • 夢見女兒結婚可我女兒還沒男朋友求高人提點?