JSON 最後不能加逗號 是不是錯誤設計?

時間 2021-05-08 14:33:16

1樓:

我就想問一句,如果不主張手寫 json 的話,直接用 msgpack 不就完事了?解析又簡單,速度又快,占用又小,要給人看時即時轉成便於閱讀的格式記錄到日誌中或者顯示在螢幕上即可啊,留著 json 這種不陰不陽,不上不下的格式幹嘛?

2樓:benpigchu

JSON 最後不能加逗號其實純粹是因為當時 js 也不允許多餘的括號。參見 mdn.io/trailing-comma 。

3樓:oooohao

設計層面的東西,都是有時代/個人的侷限性的,所以設計沒有對錯,只有適不適合。

反正就算是加逗號,也會有人問:

JSON「最後要加逗號」是不是錯誤設計?

4樓:的了哈

這是個很嚴重的問題。因為輸出個json還得判斷當前輸出是不是最後一行。當前設計很爛。如果帶著逗號,那就方便多了。最後乙個逗號要改成可有可無才可以兼顧大多人的使用需求。

5樓:

最後加逗號會不會給人一種……嗯……就是後面還有乙個空元素的感覺?

如果JSON最後沒有逗號,以元素結尾,就不會有任何這個意思了。

還是要按照JSON規範去產生。

6樓:張國鈺

我覺得JSON的key強制加引號也是不友好的

既然所有都要引號,那麼說明key就是字串一種型別,既然只有一種型別,又有逗號分割,key的引號作用是什麼?

7樓:

JSON本身就是錯誤,既然eval函式不給用了,還留JSON做啥?都幾年了,JSON還沒有正式的schema語言,XML再爛,也沒爛到JSON的地步。

補充:既然要壓縮,要加密,直接二進位制不就好了?XML有二進版的,JSON有嗎?二進又壓縮後,效率多高呀!想想看,數字日期等資料,用字串儲存多長啊。

8樓:任衛

是,絕對是。

還好,不少解析器都相容最後的逗號。

為了機器生成就更應該保留這個相容逗號。

你以為C語言為何相容這個多餘的逗號? 就是因為自己沒有`join`字串的功能而照顧機器生成。

這個多餘逗號不會對解析器造成太大的困擾,你想想,C語言在古代就能支援的事,現在你還困擾?

我這兒就有給cJSON相容末尾逗號的版本 wadefelix/cJSON

9樓:zpan

我覺得大概只是現在實現這個的 parser 太少了,等什麼時候大多數 parser 都實現了這個功能,說不定就能進標準了。而且實現這個並不會多費多少事,

10樓:Ivony

設不是設計錯誤,也不是parse的問題,完全就是為了規則簡單,就像屬性名必須加引號一樣。

事實上很多解析器也是可以處理不規範格式的。

11樓:石開

我覺得不支援結尾逗號對開發者很不友好。

經常會因為這個報錯,而且不注意的話不好找出來。

支援逗號對於寫parser人來說,並不會費額外的很多時間。

所以我覺得是設計錯誤,或者過度設計。

對於程式開發者來說,做測試時手寫json是非常常見的。

12樓:蕭井陌

當然是了,破壞一致性

忘記是哪個語言不支援陣列最後乙個元素後有逗號,現在加上這個功能了json 的野雞設計還有很多,所以其實很多情況下都應該自己魔改一下設計

但是考慮到市面上還有縮排的格式和標記……你就應該知道對這個世界不能要求太多

13樓:鄭華濱

是,拿json配置神經網路的超參時特別不爽。

反對所有說「加逗號寫起來爽讀起來不爽」的答主,我就問下面那個讀起來爽?

14樓:於小花

JSON最開始的設計目標是作為一種記憶體資料的序列化方式,用於程式間資料交換,順帶讓人類能讀(第二目標)。所以在不破壞可讀性的前提下,越省位元組越好,json不是用來手寫的,各種程式語言都有庫進行編譯碼,所以逗號的事情不是乙個設計錯誤,key需要加引號反而是。

後來呢,大家非要用json作為配置檔案,這時就各種蛋疼了,比如強制不能帶逗號,比如不能寫注釋...

15樓:徐辰

對於乙個序列item1, item2, ...,如果結尾不許有逗號,那麼語法寫出來是這樣的:

ITEMLIST ::= ITEM (',' ITEM)*如果結尾可以有可選的逗號,那麼語法寫出來是這樣的:

ITEMLIST ::= ITEM (',' ITEM)* (',')?

寫parser的人應該不會喜歡後一種。

16樓:SuperFashi

明天 Github Trending:

JSON+, a JSON-like data exchange format but allows comma at the end of objects and arrays.

後天 Github Trending:

JSON++, a JSON+-like data format but allows single-quoted keys.

大後天 Github Trending:

JSON Plus3, a JSON++-like human-friendly format because it supports comments.

......

乙個月後:

JSON5, a human-friendly data format that is just fricking awesome cause it-supports-anything-idiots-would-ever-want-to-write-by-their-own-hands.

(這玩意真的存在)

------

- 你們真厲害哦,我選擇用 XML,可以閉嘴了嗎?

- 那我們搞乙個 JSON 和 XML 的融合體吧!(這玩意也真的存在)

17樓:

因為 IE6 7 JS 物件的末尾不能是逗號,應該是為了相容強制不能有逗號了,key的引號也是乙個意思,因為 IE8 以下不能用保留字作為key

佩戴了加散光的眼鏡之後,為什麼不能再佩戴不加散光的眼鏡?

大頭哥哥 首先,要明白 形成散光眼屈光不正的光學原理,是由於屈光系統的兩個子午線上的屈光力不同,因而不能形成焦點以致視力減退,並引起足以感覺到的光學缺陷。徐廣第 眼科屈光學 其實我們的人眼正常都有一點輕微的散光,一般約在0.2D,這種輕度的散光我們一般認為是生理性的,由於上下眼瞼的經常壓迫所致。一般...

dnf中奶媽奶爸加的狀態不衝突的話,貧民是不是好過一點?

Vermisst 不會,三保乙隻會更完美的出現,玩家等級分流會更明顯,真低配團越來越少,越是貧民生存空間越小。其實現在的34C就說明了一切了。普雷前期的多數團還是會保證一純C兩個34C乙個奶的,這樣三個DPS等量互保,但現在多半都是兩個純C,34C在現在的版本策劃給的基礎低,還吃不到34互保,天生矮...

不能容忍孩子不優秀是個什麼心態?

ICEY 因為你不夠愛或者不愛你的孩子。只有當你把他當成你的附屬品的時候才存在 容忍 或者 不容忍 這樣的概念。換個角度來說,為什麼不問問孩子能不能容忍你呢?你不妨看看愛的定義是什麼,愛是包容且寬容的,是無條件的。任何有條件的愛都不是純粹的愛。 泛心康 愛因斯坦說 每個人都是天才,但是如果你用爬樹的...