簡體   English   中英

JSON 模式到 C#

[英]JSON Schema to C#

我正在尋找一個類或工具來將 JSON 模式轉換為 C# 類作為預構建步驟。

我找到了幾個“自制”解決方案(jsonschema.net,NJsonSchema,...),但更喜歡使用一些與公司/項目相關的成熟/官方代碼。 我知道 Newtonsoft.json.Schema 包只能反過來做(C# Class -> JSON)

我驚訝地發現 Visual Studio 能夠使用“編輯 -> 選擇性粘貼 -> 將 JSON 粘貼為類”開箱即用地執行此操作。 此功能背后的代碼/類/可執行文件/dll 是否可以通過編程方式訪問預構建步驟?

正如@Stiefel 所提到的,您可以為此使用 nswag 首先將NSwag.MSBuild nuget 包添加到您的項目中,這也允許您使用$(NSwagExe)宏來引用 nswag。 然后,在你的項目中添加一個預構建步驟,在我的例子中它看起來像這樣:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="$(NSwagExe) jsonschema2csclient /name:Manifest /namespace:ManifestCreator.Models /input:$(SolutionDir)schemas\SingleFileSchema.0.1.0.json /output:$(ProjectDir)Models\ManifestSchema.cs" />
</Target>

您應該能夠使用 Visual Studio 模板轉換 (T4) 文件執行此操作。 幾年前,我將它們用於類似的場景——從類似 WSDL 的專有 XML 格式生成 C# 服務代理類。 不幸的是,我無法再訪問代碼了,但是一旦您開始使用谷歌搜索 T4 和代碼生成器,就很容易弄清楚了。

您可能還想查看可擴展性/自動化模型,即DTE,以確定您是否可以訪問內置功能(我將從 T4 啟動)。

T4 確實適用於單個文件(因此稱為“模板”),但您可以輕松地從生成多個文件的 IDE 啟動模板“構建”。 高級是您將導入像 Json.Net 這樣的輔助程序集來讀取輸入,然后使用常規的舊文件 I/O 來寫入新文件。 它沒有太多魔力。 DTE 可以執行諸如啟動外部流程或在完成后呈現串聯構建日志以供人工審查之類的事情。

幾個警告:我還沒有在 VS2017 中使用 T4,但我讀過它需要額外的步驟才能開始使用它們,如果您使用的是較早的 VS,顯然存在一個問題,它們最初不會加載您的遷移到 VS2017 后的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM