JSON 完整详解|大模型接口、Function Calling 结构化输出落地指南
导语做 AI 接口开发、RAG 知识库、Agent 智能体、前后端对话平台时,JSON 是数据传输通用标准。很多新手分不清 JSON 与 JS 对象、经常出现解析报错,搭建 Function Calling 工具调用、信息抽取任务时,模型输出格式混乱导致程序崩溃。本期从 JSON 基础语法、六大原生数据类型讲起,区分对象 / 数组核心使用场景,梳理高频语法错误排查方案,重点结合大模型业务给出 JSON Schema、强制结构化输出、工具调用落地最佳实践,解决模型乱输出、解析失败线上故障。
一、JSON 基础定义与通俗类比
JSON 全称JavaScript Object Notation(JavaScript 对象标记语言),是跨语言通用纯文本结构化数据交换标准,不受编程语言限制,Python/Java/Go/ 前端 JS、各类大模型 API 全部原生支持。生活化类比:JSON 相当于通用标准化快递清单,统一规范物品名称、数量、分类,不管哪个仓库(程序)都能看懂;纯自然文字像手写随笔,机器无法自动提取字段。核心两大优势:
[*]人类可读、机器可快速解析;
[*]无语言绑定,后端推理服务、前端页面、向量库之间无缝互通。
关键区分:JSON ≠ JavaScript 对象
[*]JSON:纯文本传输格式,严格遵循 RFC 8259 国际标准,用于网络请求、配置文件、模型输出;
[*]JS 对象:浏览器 / Node 内存里的程序数据结构,语法宽松,仅 JS 内部使用;二者写法相似但规则完全不同,不能直接混用。
[*]
二、JSON 六大基础数据类型 + 两大核心容器
1 六种基础原生数据类型
[*]字符串 string:必须双引号包裹,单引号非法,支持中文、转义字符;
[*]数字 number:整数、小数,无需引号;
[*]布尔 boolean:仅true/false,小写,不加引号;
[*]null 空值:代表无数据,区别于空字符串"";
[*]对象 object:大括号{}包裹,一组"键":值键值对;
[*]数组 array:中括号[]包裹,有序值列表,元素类型可混合。
2 两大核心容器区分
对象 {} — 描述单一实体(一对一属性)
适用:用户、文档、商品、模型工具参数,每一个 key 代表属性名。标准示例:
{
"username": "AI开发工程师",
"age": 26,
"is_vip": true,
"remark": null
}
数组 [] — 有序集合(多条同类数据)
适用:聊天历史、文档片段、商品列表、工具参数数组。标准示例:、
["RAG知识库", "向量数据库", "vLLM推理"]
嵌套结构(AI 项目最常用)
对象内部嵌套数组、数组内部嵌套对象,用来表达复杂业务数据(订单、对话记录):
{
"user": "张三",
"chat_history": [
{"question": "什么是RAG", "answer": "检索增强生成"},
{"question": "vLLM优势", "answer": "分页KV缓存"}
]
}
三、JSON 强制语法规范(踩坑高频红线)
[*]所有键名(key)必须双引号,单引号、无引号全部非法;
[*]字符串只能双引号,单引号不被标准 JSON 解析器识别;
[*]对象 / 数组最后一个元素禁止末尾逗号,Java/Python 解析直接报错;
[*]JSON 不支持 //、/* */ 注释,写注释会解析失败;
[*]不能包含函数、日期对象这类编程语言特有结构;
[*]文本特殊符号" \ /必须转义。
典型错误示例(线上 90% 解析报错根源)
{
name: "李四", // key无引号 错误
'age': 25, // 单引号key 错误
"tags": ["大模型", "RAG",], // 末尾逗号 错误
// 这是注释 非法JSON
}
四、三大 AI 核心 JSON 应用场景
场景 1:前后端 LLM 流式 / 普通 API 交互
所有大模型请求体、响应体统一使用 JSON 传输。普通对话请求示例:
{
"model": "qwen-7b",
"messages": [
{"role": "system", "content": "你是知识库助手"},
{"role": "user", "content "解释向量数据库"}
],
"stream": true,
"temperature": 0.2
}
SSE 流式返回每一段 delta 增量也是标准 JSON 片段。
场景 2:Function Calling 工具调用(Agent 智能体底层)
模型需要调用数据库、接口、计算器时,必须输出标准 JSON 格式工具参数,后端程序才能自动解析执行。工具定义 JSON Schema 示例:
{
"type": "function",
"function": {
"name": "query_knowledge",
"description": "检索企业知识库",
"parameters": {
"type": "object",
"required": ["query", "doc_type"],
"properties": {
"query": {"type": "string", "description": "用户问题"},
"doc_type": {"type": "string", "enum": ["合同","产品手册"]}
}
}
}
}
场景 3:结构化信息抽取(RAG、文档解析)
要求模型输出固定 JSON,批量提取合同、简历、商品结构化字段,避免纯文本无法入库。抽取输出规范:
{
"company_name": "XX科技",
"contract_amount": 50000,
"expire_date": "2026-12-31",
"risk_points": ["付款周期过长"]
}
五、大模型稳定输出 JSON 两套工业方案
方案 1 Prompt 约束(简易 Demo 使用)
在系统提示词强制输出规则:
你的输出只能返回标准 JSON,禁止任何解释、前言、markdown 代码块;所有 key 使用双引号,数组末尾不能带逗号,不添加注释;输出结构严格遵循模板:{xxx}短板:低参数量模型、复杂任务容易失效,偶尔夹带文字。
方案 2 JSON Schema 强制结构化(生产首选)
主流商用 API(GPT、DeepSeek、通义千问)、Ollama、vLLM 均支持response_format参数,传入规范 Schema,底层 Token 生成时做语法约束,模型无法输出非法格式,解析失败概率趋近 0。OpenAI 标准调用片段:
from openai import OpenAI
client = OpenAI()
resp = client.chat.completions.create(
model="qwen2-14b",
messages=[{"role":"user","content":"提取合同信息"}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "contract_extract",
"strict": true,
"schema": {
"type": "object",
"required": ["company","amount"],
"properties": {
"company": {"type":"string"},
"amount": {"type":"number"}
},
"additionalProperties": false
}
}
}
)
核心参数strict:true禁止额外字段,从底层锁定输出结构。
本地推理(Ollama/llama.cpp)
启动参数增加format json,强制模型仅输出合法 JSON,省去人工文本清洗。
六、线上 JSON 解析故障排查全流程
[*]查看 HTTP 响应头Content-Type,必须为application/json;
[*]复制原始响应文本,在线 JSON 校验工具检查语法(多余逗号、单引号、注释);
[*]区分语法错误(括号 / 引号错)、结构错误(缺失必填 key、类型不匹配);
[*]大模型场景:无 Schema 约束优先升级为结构化输出;
[*]后端框架统一开启严格 JSON 解析(Spring/Express 默认拒绝宽松格式)。
高频报错根因
[*]Unexpected token:存在单引号、注释、多余逗号;
[*]Expected number/string:字段类型不匹配(数字加引号、布尔写字符串);
[*]Unexpected end of input:流式 JSON 片段截断、网络超时。
七、新手高频认知误区澄清
误区 1 JSON 可以写 // 注释方便调试
纠正标准 JSON 完全不支持注释,上线必须删除,否则服务解析崩溃。
误区 2 JS 对象可以直接当作 JSON 传输
纠正 JS 特有函数、单引号写法、无 key 引号均不符合规范,跨语言解析报错。
误区 3 只要提示词要求,模型一定输出纯 JSON
纠正 7B 及以下轻模型容易夹带说明文字,生产必须用 JSON Schema 强制约束。
误区 数组最后加逗号只是警告不影响
纠正 Java、Go、Python 解析器直接抛出异常,服务 500。
误区 null 和 "" 空字符串作用相同
纠正 null 代表无数据,空字符串是空白文本,数据库入库逻辑完全不同。
八、本期全文总结
1 JSON 是跨语言标准化文本格式,六大基础类型 + 对象 / 数组两大容器;2 语法红线:双引号、无末尾逗号、禁止注释、不支持单引号;3 AI 三大核心用途:LLM 接口传输、Function Calling 工具参数、文档结构化抽取;4 线上稳定方案:抛弃纯 Prompt,使用 JSON Schema 强制结构化输出;5 解析报错优先校验原始文本语法,再核对字段类型与 Schema;6 Agent、RAG、API 服务开发全部依赖 JSON,是 AI 工程底层基础数据标准。
页:
[1]