目录
1、JSON Schema 是什么?
2、什么时候需要自己写?
📍 场景 1:你定义了新的数据结构
📍 场景 2:需要严格的数据控制
3、什么时候不用自己写?
📍 场景 1:已有现成标准格式
📍 场景 2:可以通过代码自动生成
📍 场景 3:使用现成框架时
4、实际开发中的典型工作流
/5、可视化理解工具推荐
6、什么时候该犹豫?
7、终极判断标准
1、JSON Schema 是什么?
可以理解为 「数据模板」 或 「数据合同」,就像:
-
快递面单模板 → 规定必须填写的收件人信息(姓名、电话、地址)
-
考试答题卡 → 限定答案必须填在指定位置的方框内
-
乐高说明书 → 指导积木块应该怎么拼接
2、什么时候需要自己写?
📍 场景 1:你定义了新的数据结构
▸ 就像设计新型号的乐高积木,需要自己画图纸
// 大模型生成的简历数据模板
{"type": "object","properties": {"name": {"type": "string"},"skills": {"type": "array","items": {"type": "object","properties": {"name": {"type": "string"},"level": {"enum": ["初级", "中级", "专家"]}}}}}
}
📍 场景 2:需要严格的数据控制
▸ 就像银行开户必须验证身份证号格式
// 订单数据规范
{"required": ["桌号", "菜品列表"],"properties": {"桌号": {"type": "integer"},"加急": {"type": "boolean"},"菜品列表": {"type": "array","items": {"enum": ["宫保鸡丁", "鱼香肉丝", "麻婆豆腐"]}}}
}
3、什么时候不用自己写?
📍 场景 1:已有现成标准格式
▸ 就像填写快递地址直接使用国家标准地址库
📍 场景 2:可以通过代码自动生成
▸ 工具示例(Python):
# 自动从数据生成 Schema
from genson import SchemaBuilderdata_sample = {"user": "小明","age": 25,"hobbies": ["篮球", "编程"]
}builder = SchemaBuilder()
builder.add_object(data_sample)
print(builder.to_json(indent=2))
输出:
{"type": "object","properties": {"user": {"type": "string"},"age": {"type": "integer"},"hobbies": {"type": "array","items": {"type": "string"}}},"required": ["user", "age", "hobbies"]
}
📍 场景 3:使用现成框架时
▸ 比如用 Pydantic 模型自动生成:
from pydantic import BaseModelclass User(BaseModel):name: strage: int# 自动生成 Schema
print(User.model_json_schema())
4、实际开发中的典型工作流
-
初期阶段:用工具自动生成基础 Schema
-
核心业务:手动添加关键约束(如密码复杂度)
-
持续维护:像管理代码一样做版本控制
/5、可视化理解工具推荐
-
JSON Schema Viewer :图形化展示 Schema 结构
-
JSON Schema Form :根据 Schema 自动生成表单
6、什么时候该犹豫?
遇到这些情况需要谨慎:
-
数据格式经常变动 → 考虑更灵活的校验方式
-
性能敏感场景 → 直接使用代码校验可能更快
-
处理非结构化数据 → 可能不需要严格 Schema
7、终极判断标准
✅ 需要满足以下任意一条就应使用 JSON Schema:
-
多人协作需要明确数据规范
-
需要防止脏数据进入系统
-
要给 AI 模型设置输出规则
实践建议:先从自动生成工具入手,当发现自动生成的 Schema 无法满足需求时,再学习手动添加特定约束。就像先用 Word 模板写简历,再根据需求自定义修改格式。