【SpringBoot】12 Json数据校验

【SpringBoot】12 Json数据校验Json JavaScriptOb JavaScript 对象表示法 是基于 ECMAScript 的应该子集设计的 是一种开放标准的文件格式和数据交换格式 它易于人阅读和编写 同

大家好,欢迎来到IT知识分享网。

Gitee仓库

https://gitee.com/Lin_DH/system

介绍

Json

Json(JavaScript Object Notation,JavaScript对象表示法)是基于ECMAScript的应该子集设计的,是一种开放标准的文件格式和数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON独立于语言设计,很多编程语言都支持JSON格式的数据交换。JSON是一种常用的数据格式,在电子数据交换中有多种用途,包括与服务器之间的Web应用程序的数据交换。其简洁和清晰的层次结构有效地提升了网络传输效率,使其成为理想的数据交换语言。其文件通常使用扩展名.json。

JsonSchema

依赖

pom.xml

<dependency> <groupId>com.networknt</groupId> <artifactId>json-schema-validator</artifactId> <version>1.4.0</version> </dependency> 

代码实现

validation.json

Json校验格式文件,按需求改动,放在Resource目录下。

{ 
    "$schema": "http://json-schema.org/draft-07/schema#", "title": "Order Event", "description": "Order event schema for example", "required": ["order_id", "total_price", "products" ], "properties": { 
    "order_id": { 
    "type": "string" }, "event": { 
    "enum": ["PLACED", "DELIVERED", "RETURNED"], "type": "string" }, "total_price": { 
    "type": "number", "minimum": 0 }, "products": { 
    "type": "array", "items": { 
    "additionalProperties": true, "required": ["product_id", "price"], "minItems": 1, "properties": { 
    "product_id": { 
    "type": "string" }, "price": { 
    "type": "number", "minimum": 0 }, "quantity": { 
    "type": "integer" } } } } } } 

JsonSchemaConfiguration.java

package com.lm.system.config; import com.networknt.schema.JsonSchema; import com.networknt.schema.JsonSchemaFactory; import com.networknt.schema.SpecVersion; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; / * @author DUHAOLIN * @date 2024/10/14 */ @Configuration public class JsonSchemaConfiguration { 
    //校验格式文件 private static final String SCHEMA_VALIDATION_FILE = "/validation.json"; @Bean public JsonSchema jsonSchema() { 
    return JsonSchemaFactory .getInstance(SpecVersion.VersionFlag.V7) .getSchema(getClass().getResourceAsStream(SCHEMA_VALIDATION_FILE)); } } 

JsonSchemaValidationServiceImpl.java

package com.lm.system.service.impl; import com.fasterxml.jackson.databind.JsonNode; import com.networknt.schema.JsonSchema; import com.networknt.schema.ValidationMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Set; / * @author DUHAOLIN * @date 2024/10/14 */ @Slf4j @Service public class JsonSchemaValidationServiceImpl { 
    @Resource private JsonSchema jsonSchema; public String validateJson(JsonNode jsonNode){ 
    Set<ValidationMessage> errors = jsonSchema.validate(jsonNode); if(errors.isEmpty()){ 
    log.info("event is valid"); }else{ 
    log.info("event is invalid"); } return errors.toString(); } } 

JsonSchemaController.java

package com.lm.system.controller; / * @author DUHAOLIN * @date 2024/10/14 */ import com.fasterxml.jackson.databind.JsonNode; import com.lm.system.service.impl.JsonSchemaValidationServiceImpl; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @Api(tags = "json") public class JsonSchemaController { 
    @Resource private JsonSchemaValidationServiceImpl service; @PostMapping("/test") public String validateEvent(@RequestBody JsonNode jsonNode){ 
    return service.validateJson(jsonNode); } } 

测试数据

{ 
    "order_id":"order134", "event": "PLACED", "products": [ { 
    "product_id": "product_1", "price":20.5, "quantity":2 } ], "total_price": 41 } 

项目结构图

效果图

参考资料

Spring Boot 中使用 JSON Schema 来校验复杂JSON数据【https://www.didispace.com/spring-boot-2/3-3-spring-boot-json-schema.html】

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/132265.html

(0)
上一篇 2025-08-01 18:45
下一篇 2025-08-01 19:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信