关于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打造的百分比动态色彩条插件
Sep 19 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
jQuery表格插件datatables用法详解
Nov 23 Javascript
Vue.js组件tree实现无限级树形菜单
Dec 02 Javascript
浅析Jquery操作select
Dec 13 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
jQuery创建及操作xml格式数据示例
May 26 jQuery
element-ui循环显示radio控件信息的方法
Aug 24 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
uni-app 自定义底部导航栏的实现
Dec 11 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中error_reporting函数用法详细介绍
2017/06/11 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
类的核心特性有哪些
2014/01/01 面试题
老师推荐信
2013/10/28 职场文书
董事长岗位职责
2013/11/30 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书