其實目前已經有挺多的 JSON 資料校驗的工具了,比較流行的有 JOI、JSON Schema。
JOI 很靈活,寫起來比較方便。但是有一個問題就是不能跨語言,只能在 JS 中使用。
JSON Schema 是一套 JSON 資料格式校驗的標準,定義完之後,只要目標語言有 JSON Schema 的校驗庫,就可以重複使用該定義來校驗 JSON 資料。缺點語法特別囉嗦。
我們團隊目前也是用了 JSON Schema 來定義介面之類的一些資料格式。最開始我們也是直接手寫 JSON Schema,後面真的受不了各種囉嗦的宣告。舉個例子,一個典型的 JSON Schema 定義一般長這樣:
為了定義一個三個屬性的 Object,要有這麼多巢狀的程式碼。。。真的是無力吐槽。。。
於是在 JSON Schema 之上,我自己寫了一個庫 Semantic-Schema 來語義化地定義 JSON Schema。提供更好的可讀性、可維護性。庫裡面自帶了校驗工具,能夠直接用來校驗 JSON 資料,同時也能夠直接無縫 pass 成 JSON Schema,方便在 JS 之外的語言使用。而且由於是語義化的,所以也能夠使用 IDE 來完成自動提醒。目前團隊已經全部在使用這個庫來定義資料格式了。
上面的例子如果使用 Semantic Schema,則可以簡化成:
如果直接拿來校驗資料的話:
也可以直接獲取到 JSON Schema 定義,供別的語言使用:
github: magnuslim/semantic-schema
npm: semantic-schema
其實目前已經有挺多的 JSON 資料校驗的工具了,比較流行的有 JOI、JSON Schema。
JOI 很靈活,寫起來比較方便。但是有一個問題就是不能跨語言,只能在 JS 中使用。
JSON Schema 是一套 JSON 資料格式校驗的標準,定義完之後,只要目標語言有 JSON Schema 的校驗庫,就可以重複使用該定義來校驗 JSON 資料。缺點語法特別囉嗦。
我們團隊目前也是用了 JSON Schema 來定義介面之類的一些資料格式。最開始我們也是直接手寫 JSON Schema,後面真的受不了各種囉嗦的宣告。舉個例子,一個典型的 JSON Schema 定義一般長這樣:
為了定義一個三個屬性的 Object,要有這麼多巢狀的程式碼。。。真的是無力吐槽。。。
於是在 JSON Schema 之上,我自己寫了一個庫 Semantic-Schema 來語義化地定義 JSON Schema。提供更好的可讀性、可維護性。庫裡面自帶了校驗工具,能夠直接用來校驗 JSON 資料,同時也能夠直接無縫 pass 成 JSON Schema,方便在 JS 之外的語言使用。而且由於是語義化的,所以也能夠使用 IDE 來完成自動提醒。目前團隊已經全部在使用這個庫來定義資料格式了。
上面的例子如果使用 Semantic Schema,則可以簡化成:
如果直接拿來校驗資料的話:
也可以直接獲取到 JSON Schema 定義,供別的語言使用:
github: magnuslim/semantic-schema
npm: semantic-schema