关于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 相关文章推荐
破除网页鼠标右键被禁用的绝招大全
Dec 27 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
js实现支持手机滑动切换的轮播图片效果实例
Apr 29 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
深入理解jQuery 事件处理
Jun 14 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
Jun 21 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 Javascript
JS获取checkbox的个数简单实例
Aug 19 Javascript
vue数字类型过滤器的示例代码
Sep 07 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
jquery实现手风琴案例
May 04 jQuery
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中文字母数字验证码实现代码
2008/04/25 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
python实现进程间通信简单实例
2014/07/23 Python
浅析Python基础-流程控制
2016/03/18 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
python中@contextmanager实例用法
2021/02/07 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
员工自我鉴定
2013/10/09 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
就业协议书样本
2014/08/20 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
初中信息技术教学反思
2016/02/16 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis