您的位置:

java校验json格式,java判断json格式是否合法

本文目录一览:

Java用于校验一个字符串是否是合法的JSON格式

ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine se = sem.getEngineByName("js");String jsonstr = " \r\n [{}]";try { if (!jsonstr.matches("^[\r\n\f\t\\x20]*[\\{\\[][\\s\\S]*")) { throw new ScriptException("必须以{或[开头"); } se.eval("(" + jsonstr + ")"); System.out.println("是json格式");} catch (ScriptException e) { String exp = e.toString().replaceAll(".*\\:(.*)", "$1"); System.err.println(exp.replaceAll("\\(.+(?=at)", ""));}

java校验json格式及内容

代码如下

import java.text.CharacterIterator;

import java.text.StringCharacterIterator;

public class JsonValidator {

private CharacterIterator it;

private char c;

private int col;

public JsonValidator(){

}

/**

* 验证一个字符串是否是合法的JSON串

*

* @param input 要验证的字符串

* @return true-合法 ,false-非法

*/

public boolean validate(String input) {

input = input.trim();

boolean ret = valid(input);

return ret;

}

private boolean valid(String input) {

if ("".equals(input)) return true;

boolean ret = true;

it = new StringCharacterIterator(input);

c = it.first();

col = 1;

if (!value()) {

ret = error("value", 1);

} else {

skipWhiteSpace();

if (c != CharacterIterator.DONE) {

ret = error("end", col);

}

}

return ret;

}

private boolean value() {

return literal("true") || literal("false") || literal("null") || string() || number() || object() || array();

}

private boolean literal(String text) {

CharacterIterator ci = new StringCharacterIterator(text);

char t = ci.first();

if (c != t) return false;

int start = col;

boolean ret = true;

for (t = ci.next(); t != CharacterIterator.DONE; t = ci.next()) {

if (t != nextCharacter()) {

ret = false;

break;

}

}

nextCharacter();

if (!ret) error("literal " + text, start);

return ret;

}

private boolean array() {

return aggregate('[', ']', false);

}

private boolean object() {

return aggregate('{', '}', true);

}

private boolean aggregate(char entryCharacter, char exitCharacter, boolean prefix) {

if (c != entryCharacter) return false;

nextCharacter();

skipWhiteSpace();

if (c == exitCharacter) {

nextCharacter();

return true;

}

for (;;) {

if (prefix) {

int start = col;

if (!string()) return error("string", start);

skipWhiteSpace();

if (c != ':') return error("colon", col);

nextCharacter();

skipWhiteSpace();

}

if (value()) {

skipWhiteSpace();

if (c == ',') {

nextCharacter();

} else if (c == exitCharacter) {

break;

} else {

return error("comma or " + exitCharacter, col);

}

} else {

return error("value", col);

}

skipWhiteSpace();

}

nextCharacter();

return true;

}

private boolean number() {

if (!Character.isDigit(c) c != '-') return false;

int start = col;

if (c == '-') nextCharacter();

if (c == '0') {

nextCharacter();

} else if (Character.isDigit(c)) {

while (Character.isDigit(c))

nextCharacter();

} else {

return error("number", start);

}

if (c == '.') {

nextCharacter();

if (Character.isDigit(c)) {

while (Character.isDigit(c))

nextCharacter();

} else {

return error("number", start);

}

}

if (c == 'e' || c == 'E') {

nextCharacter();

if (c == '+' || c == '-') {

nextCharacter();

}

if (Character.isDigit(c)) {

while (Character.isDigit(c))

nextCharacter();

} else {

return error("number", start);

}

}

return true;

}

private boolean string() {

if (c != '"') return false;

int start = col;

boolean escaped = false;

for (nextCharacter(); c != CharacterIterator.DONE; nextCharacter()) {

if (!escaped c == '\\') {

escaped = true;

} else if (escaped) {

if (!escape()) {

return false;

}

escaped = false;

} else if (c == '"') {

nextCharacter();

return true;

}

}

return error("quoted string", start);

}

private boolean escape() {

int start = col - 1;

if (" \\\"/bfnrtu".indexOf(c) 0) {

return error("escape sequence \\\",\\\\,\\/,\\b,\\f,\\n,\\r,\\t or \\uxxxx ", start);

}

if (c == 'u') {

if (!ishex(nextCharacter()) || !ishex(nextCharacter()) || !ishex(nextCharacter())

|| !ishex(nextCharacter())) {

return error("unicode escape sequence \\uxxxx ", start);

}

}

return true;

}

private boolean ishex(char d) {

return "0123456789abcdefABCDEF".indexOf(c) = 0;

}

private char nextCharacter() {

c = it.next();

++col;

return c;

}

private void skipWhiteSpace() {

while (Character.isWhitespace(c)) {

nextCharacter();

}

}

private boolean error(String type, int col) {

System.out.printf("type: %s, col: %s%s", type, col, System.getProperty("line.separator"));

return false;

}

public static void main(String[] args){

String jsonStr = "{\"website\":\"open-open.com\"}";

System.out.println(jsonStr+":"+new JsonValidator().validate(jsonStr));

}

}

java校验json数据是否合法要怎么写?数据是别的公司传过来的!

现在有很多JSON的工具包,可以将json字符串转换为json对象,你try/catch住你转换的代码,如果转换成功,则表示json是合法的,反之这表示json数据有问题。但要验证数据是否符合你的业务要求,需要你自己写方法验证。

JSON工具可以使用 Jackson,fastjson等,具体使用方法在网上搜索。

java校验json格式,java判断json格式是否合法

2022-11-30
json格式使用java检验,json格式检测

本文目录一览: 1、使用java解析json文件,将数据存入数据库 2、java怎么读取json格式的数据 3、java校验json数据是否合法要怎么写?数据是别的公司传过来的! 4、java校验js

2023-12-08
JSON格式在线校验

2023-05-20
详解JSON格式校验器

2023-05-17
python判断是否json的简单介绍

本文目录一览: 1、python怎么判断json 字符串含有某一个字符 2、python json快速解析命令 3、py3笔记8:json结构的校验 4、python json 资料判断 true 或

2023-12-08
如何准确校验JSON格式?

2023-05-17
在线json转cmodel(json格式转换)

本文目录一览: 1、如何将json转成对应的model 2、YYModel的json转model,model转json完后调用的方法 3、iOS项目中Json转Model的坑 4、C#json转为对象

2023-12-08
json格式解析java(json格式解析过长)

本文目录一览: 1、java怎么处理json格式数据 2、java解析json格式文件,再保存在数据库怎么做? 3、java 如何解析JSON 4、java中Json怎样解析数据? 5、java 解析

2023-12-08
java正则表达式验证格式(java判断是否符合正则表达式)

2022-11-15
如何正确校验Java日期格式?

2023-05-21
java注解校json,java注解校验设置不生效

2022-12-02
java处理json格式数组(json数组转java数组)

本文目录一览: 1、java怎么将json对象转换成json数组 2、用Java语言:从下列Json数组中只展示“productTypeName=公路零担”的数据集? 3、java中把json怎么转换

2023-12-08
json格式的java接口(java json数据格式)

本文目录一览: 1、java写一个用于接收json数据的接口 2、设计一个java接口,接收json,并且将处理结果按json的格式返回 3、web环境下,servlet如何设计java接口接收jso

2023-12-08
java转json,java转json格式

2023-01-09
JSON格式检查详解

2023-05-20
mysqljson格式java(json书写格式)

2022-11-14
如何使用Java校验日期是否合法

2023-05-19
JSON校验的全面指南

2023-05-20
java传json文件,json数据传输格式

2022-11-24
upload判断是否,upload判断是否有文件

2022-11-25