程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 關於json字符串與實體之間的嚴格驗證,json字符串實體

關於json字符串與實體之間的嚴格驗證,json字符串實體

編輯:關於.NET

關於json字符串與實體之間的嚴格驗證,json字符串實體


在一個項目中要求嚴格驗證傳入的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; }       }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved