關(guān)于json字符串與實體之間的嚴(yán)格驗證代碼
在一個項目中要求嚴(yán)格驗證傳入的json字符串與定義的 類匹配,否則不記錄。感覺這個嚴(yán)格驗證找了好多資料才找到,可能用的人比較少,特摘出來給大家分析,直接上代碼了:
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
{
/*這里是通過指定的實體創(chuàng)建一個規(guī)則來驗證傳入的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è)置捕獲異常的,只是大范圍的驗證,如果匹配不上則給予默認(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;
}
實體類
using System;
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreateDate { get; set; }
}
以上所述是小編給大家介紹的關(guān)于json字符串與實體之間的嚴(yán)格驗證,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
js中console在一行內(nèi)打印字符串和對象的方法
這篇文章主要介紹了js中console在一行內(nèi)打印字符串和對象的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
JavaScript面向?qū)ο缶幊绦∮螒?--貪吃蛇代碼實例
這篇文章主要介紹了JavaScript貪吃蛇的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
純js實現(xiàn)瀑布流布局及ajax動態(tài)新增數(shù)據(jù)
這篇文章主要介紹了基于javascript實現(xiàn)瀑布流布局,及ajax動態(tài)新增數(shù)據(jù)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-04-04
TopList標(biāo)簽和JavaScript結(jié)合兩例
TopList標(biāo)簽和JavaScript結(jié)合兩例...2007-08-08
js中調(diào)用微信的掃描二維碼功能的實現(xiàn)代碼
這篇文章主要介紹了在js中調(diào)用微信的掃描二維碼功能的實現(xiàn)代碼,本文給大家分享了注意事項及常見問題分析,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
JavaScript+TypeScript實現(xiàn)并發(fā)隊列的示例
本文主要介紹了JavaScript+TypeScript實現(xiàn)并發(fā)隊列的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08

