关于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 相关文章推荐
收集的10个免费的jQuery相册
Feb 26 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
javascript实现表格排序 编辑 拖拽 缩放
Jan 02 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
javascript遇到html5的一些表单属性
Jul 05 Javascript
js图片翻书效果代码分享
Aug 20 Javascript
详谈javascript异步编程
Feb 21 Javascript
Easyui Treegrid改变默认图标的方法
Apr 29 Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
对angularJs中controller控制器scope父子集作用域的实例讲解
Oct 08 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
模仿OSO的论坛(一)
2006/10/09 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
php实现文件预览功能
2017/05/23 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
js如何验证密码强度
2020/03/18 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
Python连接DB2数据库
2016/08/27 Python
Django后台admin的使用详解
2019/07/08 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
银行学习十八大感想
2014/01/11 职场文书
音乐专业自荐信
2014/02/07 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
项目合作协议书
2014/09/23 职场文书
社区敬老月活动总结
2015/05/07 职场文书
2016国庆促销广告语
2016/01/28 职场文书