C# 校验Json格式

错误json:错误值 -2146.379

[{"Key": "surface_heights_average","Value": "-2122.739nm","Description": "surface_heights_average"}, {"Key": "surface_heights_max","Value": "-2105.69nm","Description": "surface_heights_max"}, {"Key": "surface_heights_min","Value": "-2146.165nm","Description": "surface_heights_min"}, {"Key": "hole_heights_average","Value": "-2092.042nm","Description": "hole_heights_average"}, {"Key": "hole_heights_max","Value": "-2075.576nm","Description": "hole_heights_max"}, -2146.379, {"Key": "hole_depths_average","Value": "-30.697nm","Description": "hole_depths_average"}
]

发现 Newtonsoft.Json 不能正常校验出json异常,除非反序列化到具体的实体类,使用Json Schema 可以正常校验异常位置

一、Newtonsoft.Json 反序列化校验

public bool IsValidJson(string jsonString)
{try{var obj = JsonConvert.DeserializeObject(jsonString);//var obj = JObject.Parse(jsonString);return true;}catch (JsonReaderException){return false;}
}

不能正确校验异常

二、Json Schema 校验 

nuget包:NJsonSchema

string json = @"[{""Key"": ""surface_heights_average"",""Value"": ""-2122.739nm"",""Description"": ""surface_heights_average""}, {""Key"": ""surface_heights_max"",""Value"": ""-2105.69nm"",""Description"": ""surface_heights_max""}, {""Key"": ""surface_heights_min"",""Value"": ""-2146.165nm"",""Description"": ""surface_heights_min""}, {""Key"": ""hole_heights_average"",""Value"": ""-2092.042nm"",""Description"": ""hole_heights_average""}, {""Key"": ""hole_heights_max"",""Value"": ""-2075.576nm"",""Description"": ""hole_heights_max""}, -2146.379, {""Key"": ""hole_depths_average"",""Value"": ""-30.697nm"",""Description"": ""hole_depths_average""}
]
";
var schema =  JsonSchema.FromSampleJson(json);
var errors = schema.Validate(json);foreach (var error in errors)Console.WriteLine($"json异常: 行号:{error.LineNumber} 位置:{error.LinePosition}");

 output:

能正常校验json异常 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九篇 有限状态机

实验九 有限状态机 9.1 实验目的 学习有限状态机的组成与类型; 掌握有限状态机的设计方式; 学习有限状态机的编码方式; 掌握使用有限状态机进行设计的方法。 9.2 原理介绍 9.2.1 有限状态机的基本概念 有限状态机(Finite …

openresty 的lua在返回响应后再日志里添加自定义的状态

理解了,你希望在 OpenResty 中将自定义状态输出到 log_format 中的日志格式里。你可以使用 Nginx 的变量机制将自定义状态记录到日志中。 步骤如下: 使用 set_by_lua 指令在请求处理过程中设置自定义变量。在 log_format 中引用该自定义变量。 以下是…

linux(centos7)开机自启jar文件

问题 之前参考网上说的直接在/etc/rc.local文件中增加sh文件启动语句,但是没有效果: /root/dashboard/dashboard_backend/start_dashboard.sh 权限也增加了,还是不行: chmod x /etc/rc.local 排查 排查了一下: 查…

5分钟带你了解海外仓备货系统:它能做的,可不止备货这么简单

现在跨境电商的发展速度确实还是非常快的,线上购物也越来越变成更多人的主流购物模式。这种情况下,对外贸行业来说是好事,不过对跨境电商的服务环节——海外仓,带来的压力可不小。 首先来说,现在各个电商平台对商家发…

B站内核隔离技术的应用与实践之大数据混部篇

背景 随着B站大数据业务的高速发展,各类业务资源需求也随之快速增长。与此同时,大数据集群有效的资源利用率低于预期,究其原因主要有以下两点, 业务出于性能、稳定性考量会向平台申请过量的系统资源,导致平台不会调度更…

别慌!不知道如何处理#开头的字符串时,需要先了解一下什么是NCR

最近进行接口测试时抓包发现请求响应中有类似下面这些字符 起初试图对这些编码尝试各种decoder操作来一探其真身,遗憾的是均已失败告终(后来发现,这些编码可以在浏览器中正常显示)。最后得知这种奇怪的编码格式并不是编码,而是一种…

对比学习与垂直领域微调

对比学习与垂直领域微调 对比学习是优化向量化模型的常用训练方法,目的是:优化向量化模型,使其向量化后的文本,相似的在向量空间距离近,不相似的在向量空间距离远。文档召回场景下,做对比学习(…

用栈实现队列-力扣

比较基础的一道题目,考察使用栈来实现队列,使用两个栈来模拟队列,栈的规则是后进先出,而队列是先进先出。 每次需要对栈进行操作时,将栈a的元素一次挪到栈b中,那么栈b中元素的出栈顺序,正好就是…

红酒:红酒保存的理想温度与湿度

对于云仓酒庄雷盛红酒,保存方法尤为重要。而保存红酒的关键在于控制温度与湿度这两个因素。以下是关于红酒保存的理想温度与湿度的详细解释。 首先,谈到雷盛红酒的保存温度,关键的是要避免不好温度。高温会加速化学反应,使红酒更快…

【二叉树】Leetcode 530. 二叉搜索树的最小绝对差【简单】

二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] 输出:1 解题思路 中序遍…

MDK5.10 安装手册

1.MDK5.10 安装 打开开发板光盘: 6 ,软件资料 \ 软件 \MDK5 ,双击 mdk_510.exe ,进行安装。这里我们 将其安装到 D 盘, MDK5.10 文件夹下,需要设置安装路径,如图 1.1 所示: …

(8)svelte 教程: Event Forwarding

(8)svelte 教程: Event Forwarding 什么是 Event Forwarding Event Forwarding 是 Svelte 框架中的一个概念,指的是将一个组件的事件(如点击、鼠标悬停等)转发给其父组件。这样,父组件可以监听…

JAVA流程控制--增强for循环

1.JAVA5引入了一种主要用于数组或集合的增强型for循环 2.JAVA增强for循环语法格式如下: for(声明语句:表达式) { //代码句子 } 3.声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循…

常见的多态面试题

多态的概念及其构成条件 多态概念:对不同的对象会有不同的实现方法,即为多种形态。 构成条件: 派生类要进行虚函数的重写(父子类虚函数需要三同,三同指函数名、参数、返回值)要用父类的指针或引用去调用虚…

Spring Boot自动配置原理和应用

我们知道,基于Spring Boot,我们只需要在类路径中引入一组第三方框架的starter组件,就能在Spring容器中使用这些框架所提供的各项功能。这在当下的开发过程中已经习以为常,但在Spring Boot还没有诞生之前却是不可想象的。如果我们使…

在电脑里养一只小猫,工作越忙它跑的越快

在电脑里养一只小猫,工作越忙它跑的越快 话说每个程序员都会比较关注自己电脑的运行状况吧?我也是这样,无论是编译代码还是浏览网页,都会实时监测 CPU 占用情况,看看有没有奇怪的进程占用过多的 CPU,影响我…

Monaco Editor系列(六)Range详解、Uri 自动匹配语言模型、缩略图 miniMap 配置

前情回顾: 一鼓作气,再鼓,再鼓!!哈哈哈。争取早日占领 Monaco 领地。 上一篇文章讲到的三个功能分别是 Position 类型、设置 markers、指定位置插入或替换内容 涉及到的知识点: ⛈️ 获取光标位置&#x…

从MLP到卷积

1.从MLP到卷积层 最近要做多通道的实验,所以重新将处理图像的基础模型回顾一下,什么是卷积?卷积本质是是一种特殊的全连接层。 1.1怎么w的权重从一个值变成了4维呢?可以这样理解,在此举一个例子: 其实本质可以看成&…

签名安全规范:解决【请求对象json序列化时,时间字段被强制转换成时间戳的问题】

文章目录 引言I 签名安全规范1.1 签名生成的通用步骤1.2 签名运算(加密规则)1.3 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)1.4 允许的请求头字段1.5 签名校验工具II 注解校验签名2.1 获取请求数据,并校验签名数据2.2 解决时间格式被强制转换成时间戳的问题…

6.5 比赛设备独家揭秘 | 2024高通边缘智能创新应用大赛公开课

2024高通边缘智能创新应用大赛系列公开课热度不减,第三期即将火爆开启,广翼智联FV01边缘智能物联网开发板迎来赛程期间首次公开亮相! 在这期的直播中,广翼智联高级产品市场经理伍理化将亲自担任主讲,为大家一一揭晓这…