关于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 相关文章推荐
关于Aptana Studio生成自动备份文件的解决办法
Dec 23 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
Sep 03 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
javascript ajax的5种状态介绍
Aug 18 Javascript
jquery实现弹出层登录和全屏层注册特效
Aug 28 Javascript
Angular 路由route实例代码
Jul 12 Javascript
JavaScript优化以及前段开发小技巧
Feb 02 Javascript
js实现textarea限制输入字数
Feb 13 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
Vue.js仿Select下拉框效果
Feb 18 Javascript
vue路由权限校验功能的实现代码
Jun 07 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 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
javascript 写类方式之一
2009/07/05 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
js制作提示框插件
2020/12/24 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
Python中的枚举类型示例介绍
2019/01/09 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Linux如何压缩可执行文件
2013/10/21 面试题
建筑工程自我鉴定
2013/10/18 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
法人委托书范本格式
2014/09/15 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书