关于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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
jQuery函数的等价原生函数代码示例
May 27 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
javascript模拟评分控件实现方法
May 13 Javascript
jQuery增加自定义函数的方法
Jul 18 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
javaScript语法总结
Nov 25 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
laydate日历控件使用方法详解
Nov 20 Javascript
Vue 实现树形视图数据功能
May 07 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 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经典的给图片加水印程序
2006/12/06 PHP
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
PHP cron中的批处理
2008/09/16 PHP
php 获取客户端的真实ip
2009/11/30 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
解析php中反射的应用
2013/06/18 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
php计算title标题相似比的方法
2015/07/29 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python能做什么 python的含义
2019/10/12 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
国际贸易专业推荐信
2013/11/15 职场文书
法律进企业活动方案
2014/03/04 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
python保存图片的四个常用方法
2022/02/28 Python
阿里云日志过滤器配置日志服务
2022/04/09 Servers
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers