json和json schema

JSON 和 JSON Schema 是两个紧密相关但功能完全不同的概念,前者是数据格式,后者是用于描述和验证前者的规则。以下从定义、作用、结构等方面详细说明两者的区别:

1、定义与核心作用

  • JSON(JavaScript Object Notation)
    是一种轻量级的数据交换格式,基于键值对和数组结构,用于存储和传输结构化数据。
    核心作用:承载数据内容,例如接口返回的用户信息、配置文件等。
    示例:
    {
      "name": "张三",
      "age": 25,
      "isStudent": false
    }
  • JSON Schema
    是一种基于 JSON 格式的规范,用于描述 JSON 数据的结构、类型、约束条件(如字段是否必填、数值范围等)。
    核心作用:验证 JSON 数据的合法性,确保数据符合预期格式,常用于接口文档、数据校验等场景。
    示例(描述上面 JSON 的 Schema):
    {
      "type": "object",
      "properties": {
        "name": {"type": "string"},
        "age": {"type": "number", "minimum": 0},
        "isStudent": {"type": "boolean"}
      },
      "required": ["name", "age"]
    }

2. 本质区别

维度JSONJSON Schema
本质 数据载体(“内容”) 规则定义(“说明书”)
用途 存储 / 传输数据 验证 JSON 数据的格式和约束
依赖关系 可独立存在(无需 Schema) 必须依赖 JSON 格式来编写
核心要素 键值对、数组、基本数据类型 类型(type)、约束(如 required、minimum)、结构描述

 

3、关系与使用场景

  • 关系:JSON Schema 是 JSON 的 “元数据”,即用 JSON 格式定义的 “JSON 规则”。
    例如:当后端接口返回 JSON 数据时,前端可通过对应的 JSON Schema 校验数据是否完整(如是否缺少必填字段)、类型是否正确(如 age 是否为数字)。
  • 典型场景:
    • JSON:作为 API 接口的数据格式、配置文件(如 package.json)、日志存储等。
    • JSON Schema:接口文档自动生成(如 Swagger 基于 Schema 生成文档)、数据校验(如表单提交前验证)、数据库表结构定义等。

 

总结

简单来说,JSON 是 “数据本身”,JSON Schema 是 “检查数据是否合格的规则”。前者解决 “数据如何表示” 的问题,后者解决 “数据是否符合要求” 的问题,两者配合使用可提高数据交互的可靠性。

JSON Schema 字段约束:

{
    "price": {
      "description": "The price of the product",
      "type": "number",
      "exclusiveMinimum": 0
    },
    "tags": {
      "description": "Tags for the product",
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "uniqueItems": true
    }
}
  • type:字段类型
posted @ 2025-07-26 18:05  吴飞ff  阅读(95)  评论(0)    收藏  举报