json格式校验(json格式校验器)
如何识别一个字符串是否Json格式
ScriptEngineManager sem = newScriptEngineManager();
ScriptEngine se = sem.getEngineByName("js");
String jsonstr = " \r\n [{}]";
if(!jsonstr.matches("^[\r\n\f\t\\x20]*[\\{\\[][\\s\\S]*")) {
thrownewScriptException("");
}
se.eval(jsonstr);
System.out.println("是json格式");
} catch(ScriptException e) {
System.out.println("json格式有误");
}json需要分析的情况,比想象的要多,举一个不太简单的json:
[1,{"a":2},\r\n{"a"www.hbbz08.com :{}}, {"a":[]},{"a":[{}]},{"{[a":"\"2,:3,"a":33}]"}]
从上面这个json中,就可以看出需要分析的有:
1:数组和json数组。
2:键与值(无引号、双引号)的识别
3:无限级值嵌套(数组嵌套、json嵌套)
4:7个关键符号[{,:"}]。
5:转义符号、空格、换行、回车处理。
回顾早些年写的jsonhelper
还记得cyq.data里jsonhelper的最初版本,仅处理了只有一级json的简单情况,那时候分析json就靠以下两种方法:
1:split 分隔。
2:循环 indexof 识别。
虽然偷工减料,投机取巧,但只要限定使用环境和条件、好在够用,也够简单。
当然了,现在情况变了,把限定的环境和条件去除后,事实上,要分析起来就没那么简单了。
故事一开始,思考了三天三夜
由于放开了条件,需要考虑无限级递归的,于是看似split和indexof这种方式已经不奏效了。
字符串的分析方法看似需要改朝换代了,但我仍给split和indexof寻求最后的机会。
经过层层思考与分析,发经没折了,只有祭出终极必杀招了。
终极大招:遍历字符,记录状态
一个万能的解决方法,就是遍历每个字符,然后记录这个字符前后左右上下东南西北中发白各种状态,再根据状态来识别下一个字符的动作。
1:首先有一个记录字符状态的类,如下图:
这个字符状态的记录类,我前后不断调整了n天,才终于感觉好像ok了。
2:接下来是字符的状态设置,根据不同的关键字,设置状态,如下图:
这是个漫长不断调试的过程,很折腾人。
3:一个可以不断递归json的函数,如下图:
4:一个可以识别语法错误的函数:
5:最后是一个给外部的调用方法:
如何校验 JSON 数据
先提供两个在线校验JSON工具给您;
如果是程序校验,我们可以采用这种方式,都可以采用转换的方式,如Java
//这里把JSON字符串转换为JSON对象,如果成功,就是正确的。
}cache(Exception e){
//如果进来了,就JSON格式不正确
}方法一:
用jsonobject.fromobject(str),如果异常说明其格式错误。这个方法够粗暴狂野,但是,不能有针对性的校验json。
在每一个接口里去解析json,一层一层、一个一个的校验是否是规定的参数格式。这个方法肯定没问题,但是,懒惰的程序员应该不会这样做的。
在配置文件或数据库里规定一个配置,通过不同的配置去解析不同的json,符合配置则正确,反之则错误。
json格式校验(json格式校验器)相关推荐
- 使用go反射校验json是否符合格式
使用go反射校验json是否符合格式 背景 工作中碰到需要对sbom格式进行校验的情况,sbom官方库没有提供对应的函数操作,所以需要自己根据官方提供的结构体解析对应的json文件,json库提供的反 ...
- java 对json 格式做参数格式校验
需求背景: 在接口中,需要对返回的数据进行格式校验,对于不符合要求的返回数据就表示接口数据有变更,对于该接口及时了解到接口参数的变化.所以需要对接口返回的json 字符串进行格式校验. ps :接口返 ...
- JSON格式以及JSON校验工具
JSON的三种格式 一. JSON的全称 JSON的全称是JavaScript Object Notation 二.为什么需要JSON JSON有三种格式,每一种写法都和JS中的数据类型很像,可以很轻 ...
- vue表单校验json数组格式和普通数组格式数据
1.效果图 说明:3种动作,对应3种验证规则,动作1:数字对象或数组均可(空也可):动作2:只有数组对象可通过验证:动作3:数字类型可通过验证 2.代码实现 (1)template(注意这里的循环数据 ...
- 校验json格式_格式化展示,校验错误,编辑JSON,这几个JSON工具一定不能错过
今天给大家介绍几个常用JSON的工具,基本上能满足你工作中对JSON的所有需求 google插件 JSONView 安装好插件后,格式化接口返回的JSON,还能展开节点和关闭节点,超级方便 格式化本地 ...
- 在线Json格式化、在线格式化Json代码、Json代码美化器、Json在线压缩、Json \uxxxx格式解码
Json代码进行美化.格式化.检查Json错误. 也可以进行Json代码压缩处理,提供Json Unicode转换为对应字符!!将json \uxxxx类,格式化相应的中文字符串!Json 待格式化J ...
- 利用JsonSchema校验json数据内容的合规性(转)
原文地址:Json schema 背景: 复杂的AJAX应用程序可以与数百个不同的JSON服务进行交互,因此,引入对客户端验证的需求. 在处理校验问题方面有着很多的工具,但是通常可以将它们归为以下几类 ...
- 如何利用JSON Schema校验JSON数据格式
最近笔者在工作中需要监控一批http接口,并对返回的JSON数据进行校验.正好之前在某前端大神的分享中得知这个神器的存在,调研一番之后应用在该项目中,并取得了不错的效果,特地在此分享给各位读者. 什么 ...
- php判断数组下标,php判断json或者数组格式与给定格式是否一致
开发的时候碰到个问题,我们技术人员规定了录数据的格式,例如:我们的json模板如下: { "sentence":"Martin and Kelvin went to Ch ...
- JSON Shema 校验JSON内容
背景 大量接口都按JSON传输,按照协议标准定义,JSON的合法性校验可以在代码里写死但是看着有点脏,今天我想安利一下JSON Schema.Json Schema也是一个json文件,可以用于对JS ...
最新文章
- html实时显示log,websocketd 实现浏览器查看服务器实时日志
- python打开谷歌浏览器 关键字_高效使用Chrome浏览器
- J2EE搭建Dynamic web SpringMVC工程404错误分析(三)
- 一步步编写操作系统 45 用c语言编写内核2
- python标准库sys_Python标准库之Sys模块使用详解
- 窥探日志的秘密【华为云分享】
- redis哨兵主从不切换_Redis的三种模式:主从、哨兵、集群
- 开发提效小技巧分享(一)
- unity3D游戏制作—暗黑战神DarkGod
- 外设驱动库开发笔记28:W5500以太网控制器
- 知网下载论文CAJ格式转为PDF格式
- win7计算机管理没有用户模块,Win7系统安装“ipx协议”提示“找不到相应的模块”如何解决...
- 使用MAKER进行全基因组基因注释-基础篇
- 伊甸园日历游戏 飘飘乎居士拯救MM(tyvj 1968 1140)
- imageview显示服务器图片,imageview 直接加载图片流
- JS/JQ实现页面跳转
- Python WOE的使用
- 时域分析瞬时自相关算法、频域分析复倒频分析法、调制域分析过零检测算法以及时频分析小波换算法matlab仿真
- 一文了解蛋白功能结构域预测与分析
- 八张图,看懂数据分析如何驱动决策
热门文章
- UART协议及其Verilog实现
- 工业机器人转计算机编程,工业机器人编程怎么入门呢
- 数据分析报告4:睡眠情况分析
- GAN生成手写字体识别
- ZTE MF971V LTE Cat6 MiFi Review
- 怎么让放大的图片变清晰?
- 今日科技联播:全球区块链专利申请数超5000件,Coinplug第一阿里紧随其后
- 产品经理笔试面试(题目+答案)
- unity 阳光插件_PR插件BeatEdit安装教程
- cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library