关于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 相关文章推荐
Json字符串转换为JS对象的高效方法实例
May 01 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
Node.js程序中的本地文件操作用法小结
Mar 06 Javascript
jquery实时获取时间的简单实例
Jan 26 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
用vue写一个日历
Nov 02 Javascript
Vue3 实现双盒子定位Overlay的示例
Dec 22 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
JS闭包原理与应用经典示例
2018/12/20 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
python如何判断IP地址合法性
2020/04/05 Python
python 获取计算机的网卡信息
2021/02/18 Python
阿巴庭院:Abba Patio
2019/06/18 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
个人党性剖析材料
2014/02/03 职场文书
交通事故私了协议书
2014/04/16 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
争先创优个人总结
2015/03/04 职场文书
我是特种兵观后感
2015/06/11 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Python中文纠错的简单实现
2021/07/07 Python
Tomcat配置访问日志和线程数
2022/05/06 Servers