关于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 相关文章推荐
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
Node.js 使用命令行工具检查更新
Jun 08 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
JS实现图片手风琴效果
Apr 17 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 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
日本十大惊悚动漫
2020/03/04 日漫
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
JavaScript中创建原子的方法总结
2018/08/26 Javascript
从vue源码看props的用法
2019/01/09 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
express.js中间件说明详解
2019/03/19 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python回调函数用法实例详解
2015/07/02 Python
Python 转义字符详细介绍
2017/03/21 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
Python 防止死锁的方法
2020/07/29 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
学习自我鉴定
2014/02/01 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
出国留学单位推荐信
2015/03/26 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书