[C#] 使用 NJsonSchema.CodeGeneration.CSharp 製作 JSON Schema + 驗證 JSON

2021-01-15

最近因為使用 Azure Logic Apps 了解到自己有一個技術債,就是 JSON Schema , 所以大概去了解一下,簡單來說就是 有一個東西叫做 JSON Schema 他是一個 JSON 可以用來敘述一份 JSON 是不是符合你所敘述的,簡單來說有點像是以前 XML Schema  或是 XML DTD 的東西..

詳細規則 可以參考這裡 https://json-schema.org/specification.html ,這邊有他的規格書,今天我們要做的範例是,我有一個既有的 JSON,我要如何依照他為藍本製作出一個 JSON Schema ,之後我要透過這份 JSON Schema 來驗證我的 JSON 是不是符合規範,這中間我有用到一個套件 NJsonSchema.CodeGeneration.CSharp ( https://www.nuget.org/packages/NJsonSchema.CodeGeneration.CSharp/ )

1. 我建立物件 Foo 跟 Foo2 進行測試 ,這裡面我故意讓 Age 這屬性 一個是 int 一個是 string , 但是我會使用 Foo 製作成 JSON Schema.

2. 將JSON 製作成 JSON Schema , 這裡面我將一個 JSON 物件 使用 Foo 這物件製作 JSON Schema .

3. 使用 步驟二得到的 JSON Schema 去驗證 JSON 結構



果然抓到三個錯誤結果,第一個是 Foo2 的 Age 是 string  , 第二個是 Foo2 的 Friends 第一個跟第三個物件不對。

其實概念很簡單,其實這畢竟是一個規範,也很博大精深,找時間我再來好好看看,有遇到雷我在寫文分享。


當麻許的超技八 2014 | Donma Hsu Design.