接口返回的 JSON 压成一行,几百个字符里找一个字段基本不可能。下面三种方法都能解决, 第一种在你浏览器里完成,带 token 的响应不会上传——这是很多在线工具最容易出事的地方。
JSON 格式化工具:粘进去自动排版,语法错误会指出第几行第几列, 支持压缩和转义。全部在本地解析,不发请求。
格式化 JSON →# 格式化并高亮
curl -s https://api.example.com/data | jq .
# 只取需要的字段
jq '.items[] | {id, name}'
# 校验语法:有错会打印位置
jq . broken.json
# parse error: Expected value at line 3 column 12
jq . 后面那个点不能省,它不是「随便什么」的意思,是「整个文档」。
import json
try:
json.loads(text)
except json.JSONDecodeError as e:
print(f"第 {e.lineno} 行 第 {e.colno} 列: {e.msg}")
print(text.splitlines()[e.lineno - 1])
print(" " * (e.colno - 1) + "^")
{'a':1} 在 JS 里能跑,解析器会报错。{"a":1,} 是 JS 允许、JSON 禁止。——这是 LLM 输出 JSON 时最常见的错误。// 直接算语法错误。\n,直接换行就断了。模型输出 JSON 失败,多半不是「能力不够」,而是你没给它结构约束: 用 JSON Schema / structured output,并处理尾逗号、多余说明文字这两种最常见污染。