关于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 弹出层实现代码
Oct 30 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
浅析JS中对函数function的理解(基础篇)
Oct 14 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
vue实现登录后页面跳转到之前页面
Jan 07 Javascript
node.js博客项目开发手记
Mar 16 Javascript
微信小程序实现拍照画布指定区域生成图片
Jul 18 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
JS实现简单省市二级联动
Nov 27 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 session
2013/10/28 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
uniapp实现可滑动选项卡
2020/10/21 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
详解Swift中属性的声明与作用
2016/06/30 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
django model object序列化实例
2020/03/13 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
中学生团员自我评价分享
2013/12/07 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
融资合作协议书范本
2014/10/17 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL