Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 玩物志趣 › 「JAVA教程」Spring Boot 中使用 JSON Schema 来校验复杂JSON数据

「JAVA教程」Spring Boot 中使用 JSON Schema 来校验复杂JSON数据

Eswlnk的头像
Eswlnk
2024-08-06 16:24:07
「JAVA教程」Spring Boot 中使用 JSON Schema 来校验复杂JSON数据-Eswlnk Blog
智能摘要 AI
本文介绍了在Spring Boot应用中使用JSON Schema校验复杂JSON数据的步骤。首先创建Spring Boot项目,添加`json-schema-validator`依赖,定义JSON Schema文件,并通过Spring管理Schema实例。随后,创建服务类进行数据校验,并在Controller中应用。最后,通过测试请求验证了合法和非法JSON数据的校验结果,确保数据符合预期结构和内容。

在Spring Boot应用中使用JSON Schema来校验复杂JSON数据,可以确保传输的数据符合预期的结构和格式。以下是详细的步骤和代码示例:

「JAVA教程」Spring Boot 中使用 JSON Schema 来校验复杂JSON数据-Eswlnk Blog

1. 创建一个基本的Spring Boot应用

首先,创建一个新的Spring Boot项目。如果你还不熟悉,可以参考Spring Boot的快速入门。

2. 添加JSON Schema Validator依赖

在pom.xml中添加json-schema-validator依赖:

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

3. 创建JSON Schema

在src/main/resources目录下创建一个validation.json文件,定义JSON数据的结构和验证规则。例如:

{
  "$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"
          }
        }
      }
    }
  }
}

4. 创建 JsonSchema 的 Bean

通过Spring管理JsonSchema实例:

@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));
    }
}

5. 使用 JsonSchema

创建一个服务来验证JSON数据:

@Slf4j
@Service
public class JsonSchemaValidationService {

    @Autowired
    private JsonSchema jsonSchema;

    public String validateJson(JsonNode jsonNode) {
        Set<ValidationMessage> errors = jsonSchema.validate(jsonNode);
        if (errors.isEmpty()) {
            log.info("Event is valid");
            return "Event is valid";
        } else {
            log.info("Event is invalid: {}", errors);
            return errors.toString();
        }
    }
}

6. 在 Web 层的应用

创建一个Controller来接收和校验客户端发送的JSON数据:

import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class JsonSchemaController {

    @Autowired
    private JsonSchemaValidationService service;

    @PostMapping("/test")
    public String validateEvent(@RequestBody JsonNode jsonNode) {
        return service.validateJson(jsonNode);
    }
}

7. 测试

启动Spring Boot应用,使用HTTP客户端工具(如Curl)发送测试请求:

符合规则的合法请求:

curl --location 'localhost:8080/test' \
--header 'Content-Type: application/json' \
--data '{
  "order_id": "order134",
  "event": "PLACED",
  "products": [
    {
      "product_id": "product_1",
      "price": 20.5,
      "quantity": 2
    }
  ],
  "total_price": 41
}'

响应为[],表示没有错误。

不符合规则的非法请求(缺少order_id):

curl --location 'localhost:8080/test' \
--header 'Content-Type: application/json' \
--data '{
  "event": "PLACED",
  "products": [
    {
      "product_id": "product_1",
      "price": 20.5,
      "quantity": 2
    }
  ],
  "total_price": 41
}'

响应为[$.order_id: is missing but it is required],表示校验失败并返回错误信息。

以上步骤展示了如何在Spring Boot应用中使用JSON Schema校验复杂JSON数据,从而确保数据的结构和内容符合预期。

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
javaJSONSpringBoot开发手册教程
1
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「玩物志趣」微信支付退款和退款结果查询接口简单实现(.Net 7.0)
上一篇
「玩物志趣」平板突然卡住无法关机?教你轻松解决常见故障!
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 主题改造计划:手动模块化网站首页
  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「视频分享」超低显卡需求,轻松部署DeepSeek-R1 Q4量化
  • 「玩物志趣」三元锂电池和磷酸铁锂电池优缺点全解析,哪款更适合你?
  • 「玩物志趣」平板突然卡住无法关机?教你轻松解决常见故障!
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

域名转出还是重新注册一个
2024-04-01 12:38:19
个人注册域名怎么选择后缀
2024-03-27 12:40:03
世界上最小的猫是?揭秘世界最迷你猫咪,你绝对想不到它有多小!
2023-07-12 18:42:46

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.581 秒   |  SQL查询 49 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈