关于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 相关文章推荐
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
容易造成JavaScript内存泄露几个方面
Sep 04 Javascript
IE6 hack for js 集锦
Sep 23 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
Dec 09 Javascript
angularJs中$http获取后台数据的实例讲解
Aug 08 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
Feb 02 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
在vue项目中使用sass语法问题
Jul 18 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 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
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
劳动竞赛活动方案
2014/02/20 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
违纪检讨书
2015/01/27 职场文书
2015年环境整治工作总结
2015/05/22 职场文书