关于json字符串与实体之间的严格验证代码


Posted in Javascript onNovember 10, 2016

在一个项目中要求严格验证传入的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字符串与实体之间的严格验证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery cookie操作代码
Mar 14 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
jquery 学习之二 属性(类)
Nov 25 Javascript
JavaScript中检测变量是否存在遇到的一些问题
Nov 11 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
Nov 27 Javascript
详解JavaScript中localStorage使用要点
Jan 13 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
Javascript之深入浅出prototype
Feb 06 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
使用Karma做vue组件单元测试的实现
Jan 16 Javascript
JS数组的常用10种方法详解
May 08 Javascript
jquery日历插件e-calendar升级版
Nov 10 #Javascript
Vue.js开发环境搭建
Nov 10 #Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 #Javascript
javascript中的后退和刷新实现方法
Nov 10 #Javascript
jQuery中Nicescroll滚动条插件的用法
Nov 10 #Javascript
js对字符串进行编码的方法总结(推荐)
Nov 10 #Javascript
EasyUI 结合JS导出Excel文件的实现方法
Nov 10 #Javascript
You might like
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
php汉字转拼音的示例
2014/02/27 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
Python操作MySQL简单实现方法
2015/01/26 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
Python如何调用JS文件中的函数
2019/08/16 Python
提高python代码运行效率的一些建议
2020/09/29 Python
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
为什么需要版本控制
2016/10/28 面试题
个人简历中自我评价
2014/02/11 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
降价通知函
2015/04/23 职场文书
金陵十三钗观后感
2015/06/04 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书