关于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 处理 gif动画 的onload 事件的一个 bug
Apr 12 Javascript
IE innerHTML,outerHTML所引起的问题
Jun 04 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
Aug 23 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
Sep 29 Javascript
angular4强制刷新视图的方法
Oct 09 Javascript
vue中$nextTick的用法讲解
Jan 17 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 Javascript
vue中使用腾讯云Im的示例
Oct 23 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的一个基础知识 表单提交
2011/07/04 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
Python中replace方法实例分析
2014/08/20 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
python3人脸识别的两种方法
2019/04/25 Python
Django保护敏感信息的方法示例
2019/05/09 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
python中rb含义理解
2020/06/18 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
python类共享变量操作
2020/09/03 Python
职工运动会邀请函
2014/02/02 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
节能标语大全
2014/06/21 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
教师远程研修感悟
2015/11/18 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
MySQL创建管理LIST分区
2022/04/13 MySQL