You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何诊断JSON数据常见错误?基于报错信息的排查清单需求

疑似JSON数据问题排查清单

一、"Unexpected token X at position Y" 类报错

  • 报错核心内容:明确指出在指定位置(Y)出现了不符合JSON规范的符号(X)
  • 常见诱因:
    • 字符串/键名未用双引号包裹(比如用单引号'key',或直接裸写key: value)
    • 基础类型拼写错误(比如tru、12.3.4、nll这类不合法的布尔/数值/空值写法)
    • 结构末尾多写逗号(比如数组[1,2,3,]、对象{"a":1, "b":2,}的结尾逗号)
    • 混入非JSON语法(比如// 注释、/* 注释 */,或者函数定义function(){}))
  • 排查方法:
    1. 用文本编辑器定位到位置Y(注意多数工具的计数从0开始),直接查看对应字符
    2. 若符号是单引号,全局替换为双引号后再验证
    3. 检查多余逗号所在的数组/对象结尾,确认是否多写了分隔符

二、"Unexpected end of JSON input" 类报错

  • 报错核心内容:提示JSON数据结构不完整,未正常结束
  • 常见诱因:
    • 字符串未闭合(比如{"name": "Alice,缺少结尾双引号)
    • 数组/对象未闭合(比如{"data": [1,2,缺少右括号]和右大括号})
    • 数据被截断(传输丢包、文件保存不完整、复制时漏选内容)
  • 排查方法:
    1. 直接查看数据末尾,检查是否有未闭合的括号、引号
    2. 用本地格式化工具尝试自动补全,看补全位置是否符合逻辑
    3. 对比原始来源,确认是否存在传输/保存环节的内容丢失

三、"Duplicate key 'X'" 类报错

  • 报错核心内容:提示对象中存在重复的键名X
  • 常见诱因:
    • 手动编写时重复输入同一键(比如{"id":1, "id":2})
    • 生成工具逻辑错误,重复输出同一键名
  • 排查方法:
    1. 全局搜索键名X,定位所有出现的位置
    2. 检查重复键的上下文,保留正确的键值对,删除无效项

四、"Invalid JSON primitive" 类报错

  • 报错核心内容:提示存在JSON不支持的基础类型内容
  • 常见诱因:
    • 出现JSON禁用类型(比如undefined、NaN、Infinity)
    • 裸写非合法基础值(比如单独的test不合法,必须用双引号包裹为字符串)
  • 排查方法:
    1. 搜索报错中提到的原始值,确认是否属于JSON支持类型(字符串、数字、布尔、null、数组、对象)
    2. 将undefined替换为null,NaN/Infinity替换为合法数字或字符串形式

五、无明确报错但解析结果异常(丢数据、结构混乱)

  • 表现:工具未抛出错误,但解析后内容和预期不符
  • 常见诱因:
    • 混入隐藏字符(全角空格、不可见控制字符)
    • 编码不匹配(数据是GBK等编码,但解析工具默认用UTF-8读取)
    • 嵌套结构层级错误(数组和对象嵌套逻辑混乱)
  • 排查方法:
    1. 开启文本编辑器的显示隐藏字符功能,排查异常字符
    2. 将文件编码转换为UTF-8后重新解析
    3. 用本地格式化工具格式化数据,直观检查嵌套结构是否合理

通用排查步骤

  • 将疑似JSON数据保存为临时文件(比如temp.json)
  • 用命令行工具快速验证:比如python -m json.tool temp.json或jq . temp.json,终端会直接输出报错位置和原因
  • 若工具无法解析,先手动检查基础语法:所有键用双引号、字符串用双引号、无多余逗号、结构完全闭合

内容的提问来源于stack exchange,提问作者Karl Knechtel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:15:26