在一個項目中要求嚴格驗證傳入的json字符串與定義的 類匹配,否則不記錄。感覺這個嚴格驗證找了好多資料才找到,可能用的人比較少,特摘出來給大家分析,直接上代碼了:
using Newtonsoft.Json;
首先引用 Newtonsoft.Json.Schema
主函數調用
private static void Main(string[] args){string Json = @"{ 'Email':'58', 'Active':true, 'CreateDate':'2015-12-11 9:24:33'}";try{/*這里是通過指定的實體創建一個規則來驗證傳入的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);}/*這段代碼的也是設置捕獲異常的,只是大范圍的驗證,如果匹配不上則給予默認值。上面的是嚴格判斷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;}
實體類
using System; public class Account{public string Email { get; set; }public bool Active { get; set; }public DateTime CreateDate { get; set; } }
以上所述是小編給大家介紹的關于json字符串與實體之間的嚴格驗證,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答