安裝1.0.10以及以上版本的 Wesky.Net.OpenTools 包
包內,該功能的核心程式碼如下:
自定義屬性:
實體類JSON模式生成器:
使用方式:引用上面的1.0.10版本或以上的包。如果實體類有特殊需求,例如對映為其他名稱,可以用OpenJson屬性來實現。實體類物件案例如下:
上面實體類,提供了屬性小寫標記、沒有任何標記、以及一個集合屬性,用於展示可能存在的多種情況。如果需要小寫,或者對映為其他的,可以透過OpenJson屬性來標記為指定的名稱;如果存在多層或者集合,也可以自動識別巢狀關係。
使用方式,只需要一行程式碼即可:
輸出結果如下所示。
應用場景:可以用於實現類似swagger的輸入引數的快速賦值操作。例如訪問webapi介面,透過解析對應引數實體,自動顯示輸入引數的Json結構,然後裡面填寫結果進行快速演示測試之類的。或者其他擴充方法等,需要大佬們感興趣的自己去玩玩。
本次演示程式碼:
public class TestInfo { [OpenJson("name")] public string Name { get; set; } [OpenJson("description")] public string Description { get; set; } public int Age { get; set; } public bool IsMale { get; set; } public string School { get; set; } public List<Student> Students { get; set; } } public class Student { [OpenJson("name")] public string Name { get; set; } public string Address { get; set; } } // Program: static void Main(string[] args) { var data = OpenJsonSchemaGenerator.CreateJsonSchema(typeof(TestInfo)); Console.WriteLine(data); Console.ReadLine(); }
如果以上內容對你有幫助,歡迎點贊、轉發、在看和關注我的個人公眾號:【Dotnet Dancer】
OpenTools系列文章快捷連結【新版本完全相容舊版本,不需要更新任何程式碼均可使用】:
1.0.8版本:
上位機和工控必備!用.NET快速搞定Modbus通訊的方法
https://mp.weixin.qq.com/s/Yq6kuXzFglHfNUqrHcQO9w
1.0.7版本:
大揭秘!.Net如何在5分鐘內快速實現物聯網掃碼器通用掃碼功能?
https://mp.weixin.qq.com/s/-5VuLAS6HlElgDQXRY9-BQ
1.0.6版本:
.NET實現獲取NTP伺服器時間並同步(附帶Windows系統啟用NTP服務功能)
https://mp.weixin.qq.com/s/vMW0vYC-D9z0Dp6HFSBqyg
1.0.5版本:
C#使用P/Invoke來實現登錄檔的增刪改查功能
https://mp.weixin.qq.com/s/LpsjBhDDzkwyLU_tIpF-lg
1.0.3版本:
C#實現圖片轉Base64字串,以及base64字串在Markdown檔案內復原的演示
https://mp.weixin.qq.com/s/n9VtTCIiVUbHJk7OfoCcvA
1.0.2版本:
C#實現Ping遠端主機功能(支援IP和域名)
https://mp.weixin.qq.com/s/d-2HcIM1KaLo-FrrTLkwEw
1.0.1版本:
開始開源專案OpenTools的創作(第一個功能:AES加密解密)
https://mp.weixin.qq.com/s/78TA-mst459AuvAHwQViqQ
【備註】包版本完全開源,並且沒有任何第三方依賴。使用.net framework 4.6+、任意其他跨平臺.net版本環境,均可直接引用。