当前位置: 首页 > news >正文

JSON Schema 校验是什么?面试时怎么说?

JSON Schema 校验,其实就是 对接口返回的数据结构做自动化校验,确保它符合预期格式。

比如下单接口返回的数据是这样的:

{
"orderId": 12345,
"status": "paid",
"amount": 58.5,
"items": [
{
"productId": 1001,
"name": "苹果",
"quantity": 2
}
]
}

我们用 JSON Schema 定义接口的“标准格式”,比如:

{
"type": "object",
"properties": {
"orderId": { "type": "integer" },
"status": { "type": "string" },
"amount": { "type": "number" },
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"productId": { "type": "integer" },
"name": { "type": "string" },
"quantity": { "type": "integer" }
},
"required": ["productId", "name", "quantity"]
}
}
},
"required": ["orderId", "status", "amount", "items"]
}

然后用工具(比如 Python 的 jsonschema 库)去校验:

orderId 必须是整数

status 必须是字符串

items 必须是数组,数组里的元素必须包含 productId、name、quantity

作用:

保证接口返回格式正确:字段名、类型、是否必填。

防止上线后出错:比如后端改了字段类型,前端/测试能第一时间发现。

配合自动化:写一次 Schema,就能自动化校验所有返回。

面试回答模板

如果面试官问 “JSON Schema 校验你怎么用的?”
你可以这样说:

👉 “我们在接口测试里引入了 JSON Schema 校验,比如订单接口返回的字段结构,我会用 jsonschema 库定义标准,然后在自动化测试里比对接口实际返回和 Schema 是否一致。这样可以快速发现字段缺失、类型不符的问题,保证接口返回的稳定性。”

代码举例:写一段 Python 示例代码,用 jsonschema 来校验接口返回。

示例代码:校验订单接口返回

import requests
from jsonschema import validate

  1. 定义接口返回的 JSON Schema
    order_schema = {
    "type": "object",
    "properties": {
    "orderId": {"type": "integer"},
    "status": {"type": "string"},
    "amount": {"type": "number"},
    "items": {
    "type": "array",
    "items": {
    "type": "object",
    "properties": {
    "productId": {"type": "integer"},
    "name": {"type": "string"},
    "quantity": {"type": "integer"}
    },
    "required": ["productId", "name", "quantity"]
    }
    }
    },
    "required": ["orderId", "status", "amount", "items"]
    }

  2. 调用接口(示例 URL)
    url = "http://api.demo.com/order/detail?orderId=12345"
    response = requests.get(url)
    data = response.json()

  3. 用 Schema 校验返回结果
    try:
    validate(instance=data, schema=order_schema)
    print("✅ 接口返回符合预期 Schema")
    except Exception as e:
    print("❌ 接口返回不符合 Schema:", e)

在面试时还可以说:

“我会在接口自动化里加 Schema 校验,保证返回结构和字段类型稳定。”

“比如订单接口返回的 orderId 必须是整型,items 必须是数组,如果后端改了类型,测试用例能第一时间发现。”

“这比单纯的断言字段值更健壮,能防止上线后出现前端解析报错。”

这样在面试时你就可以加一句:
👉 “除了常规的断言,我还会用 jsonschema 库做接口返回的 Schema 校验,保证接口结构稳定。”

http://www.wxhsa.cn/company.asp?id=5971

相关文章:

  • 【征文启动】IvorySQL PostgreSQL 迁移实战经验征集:分享你的技术沉淀,赢取专属好礼!
  • MCP的天气预报的使用
  • 6款超好用的AI换脸软件,一键视频直播换脸(附下载链接)
  • lc1029-两地调度
  • pyAutoGUI 模块主要效果介绍-(2)键盘功能
  • (简记)时间复杂度分析 $\Omicron,\Theta,\Omega$ 的区别
  • Java的运算符
  • 2025年最强API安全解决方案:以智能风险监测重塑企业数据防护体系
  • HTML打包EXE工具中的WebView2内核更新指南
  • Javadoc生成文档方法
  • HTML一键打包EXE工具中使用Websocket
  • KUKA程序中DEF 与 DEFFCT 的区别
  • 第一天作业
  • EXE一机一码打包加密大师 - 打包加壳原理
  • 力扣62题 不同路径
  • 八皇后问题
  • 零知识证明中的专业漏洞解析
  • golang
  • 2025.9.16日软件工程学习日志
  • 2025ccpc南昌邀请赛感想+补题
  • img标签如何去除边框?
  • 25.9.16 java se大致了解后开始学习MySQL
  • C++ + OpenCV + Tesseract 实现英文数字验证码识别
  • Hadoop伪分布式hbase学习
  • Redis源码学习 -- 基本数据结构 -- Quicklist - -蓝蜗牛
  • 动态修改线程池参数
  • 力扣70题 爬楼梯
  • PHP(Laravel)+ ImageMagick + Tesseract 实现验证码识别
  • Windows下使用python + opencv读取含中文路径的图片 和 把图片数据保存到含中文路径下
  • 黑白世界