前幾天看到「Hjson, the Human JSON」這東西,想要在 JSON 上面提出拓展,讓人更好維護。
有幾個設計是大家已經想很久了。
首先是允許註解:
{ # specify rate in requests/second "rate": 1000 }
再來是允許 ending trailing comma,這點在新的 JavaScript Engine 裡面是允許的,但在 JSON 規格裡是不允許的,對於 copy-paste 時就得很小心有沒有中獎:
{ one: 1, two: 2, }
另外幾個特點就還好。
object 的 key 沒有特殊情況時可以省略 double quote:
{ key: "value" }
甚至 value 是 single line 時也可以省略:
{ text: look ma, no quotes! }
而且當沒有 double quote 時不需要處理 escape 問題:
{ path: c:\windows inject: <div class="important"></div> # escapes work inside quotes escape: "c:\\windows" }
然後逗點可以省略,給的範例也突顯出對腦袋不直覺的問題 (ambiguous),這邊的 1 是 integer 還是 string?
{ one: 1 two: 2 }
多行,用 '''
應該是借用了 Python 的想法?
{ haiku: ''' JSON I love you. But strangled is my data. This, so much better. ''' }
規格後面有提到 syntax,可以看到定義。
Hjson 算是一個開始吧,YAML 的設計需要極長的 training 時間才能正確使用,不知道 SaltStack 會不會有人馬上寫 adapter 出來接?(因為 SaltStack 已經可以接 JSON 與 YAML,只要有人把該接的接上去就可以了)