關(guān)于json字符串與實(shí)體之間的嚴(yán)格驗(yàn)證代碼
在一個(gè)項(xiàng)目中要求嚴(yán)格驗(yàn)證傳入的json字符串與定義的 類(lèi)匹配,否則不記錄。感覺(jué)這個(gè)嚴(yán)格驗(yàn)證找了好多資料才找到,可能用的人比較少,特摘出來(lái)給大家分析,直接上代碼了:
using Newtonsoft.Json;
首先引用 Newtonsoft.Json.Schema
主函數(shù)調(diào)用
private static void Main(string[] args) { string Json = @"{ 'Email':'58', 'Active':true, 'CreateDate':'2015-12-11 9:24:33' }"; try { /*這里是通過(guò)指定的實(shí)體創(chuàng)建一個(gè)規(guī)則來(lái)驗(yàn)證傳入的json是否符合要求*/ JSchemaGenerator generator = new JSchemaGenerator(); JSchema schema = generator.Generate(typeof(Account)); JObject person = JObject.Parse(Json); IList<string> messages; bool valid = person.IsValid(schema, out messages); if (!valid) { foreach (string message in messages) { Console.WriteLine(message); } } else { Console.WriteLine("OK"); } } catch (JsonSerializationException ex) { Console.WriteLine(ex.Message); } /* 這段代碼的也是設(shè)置捕獲異常的,只是大范圍的驗(yàn)證,如果匹配不上則給予默認(rèn)值。上面的是嚴(yán)格判斷 JsonConvert.DeserializeObject<Account>(Json, new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error, Error = eventHandler }); */ Console.Read(); } public static void eventHandler(object sender, ErrorEventArgs args) { var currentError = args.ErrorContext.Error.Message; Console.WriteLine(currentError); args.ErrorContext.Handled = true; }
實(shí)體類(lèi)
using System; public class Account { public string Email { get; set; } public bool Active { get; set; } public DateTime CreateDate { get; set; } }
以上所述是小編給大家介紹的關(guān)于json字符串與實(shí)體之間的嚴(yán)格驗(yàn)證,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JS正則表達(dá)式大全(整理詳細(xì)且實(shí)用)
JS正則表達(dá)式大全(整理詳細(xì)且實(shí)用)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11JavaScript 實(shí)現(xiàn)類(lèi)的多種方法實(shí)例
JavaScript 實(shí)現(xiàn)類(lèi)的多種方法實(shí)例,需要的朋友可以參考一下2013-05-05JS如何通過(guò)FileReader獲取.txt文件內(nèi)容
今天小編就為大家分享一篇JS如何通過(guò)FileReader獲取.txt文件內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12js實(shí)現(xiàn)短信發(fā)送倒計(jì)時(shí)功能(正則驗(yàn)證)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)短信發(fā)送倒計(jì)時(shí)功能,包含正則驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02JS中async/await實(shí)現(xiàn)異步調(diào)用的方法
這篇文章主要介紹了async/await實(shí)現(xiàn)異步調(diào)用的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08JavaScript枚舉選擇jquery插件代碼實(shí)例
這篇文章主要介紹了JavaScript枚舉選擇jquery插件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11