关于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 相关文章推荐
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
js的alert弹出框出现乱码解决方案
Sep 02 Javascript
javascript 回调函数详解
Nov 11 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
React组件生命周期详解
Jul 03 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
Oct 13 Javascript
小程序日历控件使用方法详解
Dec 29 Javascript
js实现旋转木马轮播图效果
Jan 10 Javascript
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 Javascript
vue项目在线上服务器访问失败原因分析
Aug 14 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
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 星际争霸
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
高三自我评价
2014/02/01 职场文书
银行批评与自我批评
2014/02/10 职场文书
六查六看自查材料
2014/02/17 职场文书
工作目标责任书
2014/07/23 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Python Socket编程详解
2021/04/25 Python
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL