Json Schema 校验json,java代码示例
1、json schema 入门请参考下面两篇博客
1.1Json Schema 快速入门
1.2Json Schema 简介
2、java代码实现步骤
2.1引入依赖
<!-- json schema 转换 fge --><dependency>
<groupId>com.github.fge</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.2.6</version>
</dependency>
2.2创建工具类JsonSchemaUtil
import com.fasterxml.jackson.databind.JsonNode;import com.github.fge.jackson.JsonLoader;
import com.github.fge.jackson.JsonNodeReader;
import com.github.fge.jsonschema.core.report.LogLevel;
import com.github.fge.jsonschema.core.report.ProcessingMessage;
import com.github.fge.jsonschema.core.report.ProcessingReport;
import com.github.fge.jsonschema.main.JsonSchemaFactory;
import org.springframework.util.ResourceUtils;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
public class JsonSchemaUtil {
/**
* @param jsonStr 验证json字符串
*/
public static JsonNode strToJsonNode(String jsonStr) {
JsonNode jsonNode = null;
try {
jsonNode = JsonLoader.fromString(jsonStr);
} catch (IOException e) {
e.printStackTrace();
}
return jsonNode;
}
/**
* @param jsonFilePath jsonSchema文件路径
*/
public static JsonNode schemaToJsonNode(String jsonFilePath) {
JsonNode jsonSchemaNode = null;
try {
jsonSchemaNode = new JsonNodeReader().fromReader(new FileReader(ResourceUtils.getFile(jsonFilePath)));
} catch (IOException e) {
e.printStackTrace();
}
return jsonSchemaNode;
}
/**
* @param jsonNode json数据node
* @param schemaNode jsonSchema约束node
*/
private static boolean getProcessingReport(JsonNode jsonNode, JsonNode schemaNode) {
//fge验证json数据是否符合json schema约束规则
ProcessingReport report = JsonSchemaFactory.byDefault().getValidator().validateUnchecked(schemaNode, jsonNode);
if (report.isSuccess()) {
// 校验成功
return true;
} else {
Iterator<ProcessingMessage> it = report.iterator();
StringBuilder ms = new StringBuilder();
ms.append("json格式错误: ");
while (it.hasNext()) {
ProcessingMessage pm = it.next();
if (!LogLevel.WARNING.equals(pm.getLogLevel())) {
ms.append(pm);
}
}
System.err.println(ms);
return false;
}
}
}
2.3测试数据
schema:
{"$schema":"http://json-schema.org/draft-04/schema#",
"title":"cat",
"properties":{
"name":{
"type":"string"
},
"age":{
"type":"number",
"description":"Your cat's age in years"
},
"declawed":{
"type":"boolean"
},
"description":{
"type":"string"
}
},
"required":[
"name",
"age",
"declawed"
]
}
json:
{"name":"TOM",
"age":23,
"declawed":false,
"description":"TOM loves to sleep all day."
}
参考:
JSON解析器之json schema校验及代码实现
json schema 在线测试
https://www.bbsmax.com/A/D854nv0VzE/
https://blog.csdn.net/weixin_42534940/article/details/86594376
https://www.jianshu.com/p/d94d1c87b2eb
https://blog.csdn.net/ExcellentYuXiao/article/details/52345550
各种类型示例
以上是 Json Schema 校验json,java代码示例 的全部内容, 来源链接: utcz.com/z/390934.html