JSON 与数据处理指南
JSON 响应字节:UTF-8、BOM 与意外 HTML
从媒体类型、开头字节和传输解码排查 JSON 响应解析失败,避免直接修复错误页面。
先确认响应确实是 JSON
登录跳转或网关错误可能返回 HTML,而客户端仍按 JSON 解析;HTTP 200 本身不说明正文类型。
先检查状态码、最终 URL 与 Content-Type,再使用 JSON 校验;HTML 错误页需要修复请求链或认证。
Expected: application/json
Unexpected first bytes: 3c 21 44 4f 43 54 59 50 45
ASCII: <!DOCTYPE定位文件开头的 BOM
RFC 8259 要求开放系统交换 JSON 使用 UTF-8,发送端不得添加 BOM,解析器可以选择忽略它。
用 HEX 查看下载正文;浏览器解码层可能已去除 UTF-8 BOM,因此粘贴出来的文本不能完整证明原始字节。
UTF-8 BOM: ef bb bf
{"ok":true}: 7b 22 6f 6b 22 3a 74 72 75 65 7d分开检查压缩与字符解码
Content-Encoding 说明传输压缩,UTF-8 说明解压后的文本字节;压缩数据不能直接作为 JSON 解析。
浏览器已经解压时不要再解压,依据客户端库约定判断处理阶段,而非根据文件名猜测。
修复发送端并保留证据
先测试无 BOM 的微型 UTF-8 响应,确认接收环境可解析,再对照失败响应开头的字节。
去除已确认的 BOM 可作为明确记录的兼容处理;随意删开头文字或修复 JSON 会掩盖真实问题。