关于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 相关文章推荐
alert出数组中的随即值代码
Sep 25 Javascript
AngularJS语法详解
Jan 23 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
Oct 28 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
vue跨域解决方法
Oct 15 Javascript
layer.close()关闭进度条和Iframe窗的方法
Aug 17 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 Javascript
JavaScript 九种跨域方式实现原理
Feb 11 Javascript
vue2.0实现列表数据增加和删除
Jun 17 Javascript
解决vue+webpack项目接口跨域出现的问题
Aug 10 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
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
深入浅析vue中cross-env的使用
2019/09/12 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python实现的tab文件操作类分享
2014/11/20 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
python 连接sqlite及简单操作
2017/06/30 Python
python实现k-means聚类算法
2018/02/23 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python文件操作方法详解
2020/02/09 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
高中生学习生活的自我评价
2013/11/27 职场文书
环境科学专业个人求职的自我评价
2013/11/28 职场文书
自荐信格式简述
2014/01/25 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
优秀班组事迹材料
2014/12/24 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
养成教育工作总结
2015/08/13 职场文书
股东协议书范本2016
2016/03/21 职场文书