發表文章

目前顯示的是 11月, 2019的文章

關於JSON資料格式與語言的關係

圖片
今天有人提到:「JSON 資料格式與語言無關」,這樣斷章取義真的會誤導部分不求甚解的人。應該完整的引用整句話上下文:「JSON 資料格式與語言無關,脫胎自JavaScript」,想像一下子女與父母的血緣關係,沒有人會說兩者就像路人一樣無關的。 我覺得維基百科上「JSON 資料格式與語言無關」這段文字的適當性其實有很大的商榷空間。 維基百科的內容不是真理,畢竟它的大部分內容是開放的。它的文案校對水平跟出版業比起來不是一個級別,網頁文字修改並不像印刷品需要逐本去貼貼紙,因此沒有一套嚴謹的出版SOP。 『只知學習,卻不去思考所學的道理,那還是等於一無所知;而單憑空想,卻不去實地學習,也是得不到正確的學問。』 嚴格地說,JSON 是 Javascript 的非函式物件拓墣型態,它在拓墣後必然失去生命力,因為無法存在非執行環境(網路)的邏輯資料(API語法)已經被移除。然而,該拓墣若回到原生執行環境則100%相容,因此JSON非常適合用於瀏覽器跨平台資料交換。 JSON是唯一一種程式語法的片段本身,既可當成網路資料傳輸文件,同時是不須經過修改即可直接被直譯的程式語言和網路資料交換標準。講白話就是,你可以把Javascript的特定程式碼(子集)直接傳給任何其他語言開發的系統,都能被接受,更不用說這語言子集已經是IT產業 EDI 標準。 任何程式語言都能透過對JSON文檔或字串的解析來轉換為語言自己的資料型別,但不能用JS語法來宣告定義資料型別和初始值。反觀Javascript可以一字不改的使用JSON來宣告定義。 請問有哪位程式人員會在JS寫:「var o = JSON.parse("[1,2,3]");」而不寫「var o = [1,2,3];」的? 事實上,不管JSON的格式如何進化,都會先在Javascript的現行版本包含這些規格,因為這是規定(都說是子集了),這是JSON的宿命,當初若沒有Javascript打下Ajax的一片天,JSON就沒有取代XML的優勢可言,未來不會有JSON跟JS有分道揚鑣的一天,因為唇亡則齒寒。 上面立論非常重要,也是我認為「JSON 資料格式與語言無關」這句話有誤導概念之嫌的原因。 維基百科是這樣寫 JSON 的: 「JSON(JavaScript Object Not