关于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 相关文章推荐
解放web程序员的输入验证
Oct 06 Javascript
jQuery 性能优化指南 (1)
May 21 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
Mar 25 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
Aug 28 Javascript
Javascript Ajax异步读取RSS文档具体实现
Dec 12 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
js Calender控件使用详解
Jan 05 Javascript
Vue侧滑菜单组件——DrawerLayout
Dec 18 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 Javascript
html中两种获取标签内的值的方法
Jun 16 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 daodb插入、更新与删除数据
2009/03/19 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
Vue精简版风格概述
2018/01/30 Javascript
详解vuex的简单使用
2018/03/12 Javascript
webpack打包js的方法
2018/03/12 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python中的字符串替换操作示例
2016/06/27 Python
浅谈python对象数据的读写权限
2016/09/12 Python
python之Socket网络编程详解
2016/09/29 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Java分治归并排序算法实例详解
2017/12/12 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Python笔记之观察者模式
2019/11/20 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
英国高街电视:High Street TV
2018/05/22 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
毕业生个人求职信范例分享
2013/12/17 职场文书
教师党性分析材料
2014/02/04 职场文书
校园环保标语
2014/06/13 职场文书
导游词之山海关
2019/12/10 职场文书