Chrome开发者工具中JSON响应值颜色差异问题咨询(附PHP代码)
问题排查与解决方案
针对你遇到的Chrome响应面板JSON颜色差异和Equuleus类型错误问题,我来逐一分析并给出解决方向:
1. JSON显示颜色差异的原因
Chrome开发者工具里的JSON高亮逻辑完全依赖后端返回的Content-Type响应头:
- 对方网站的后端在输出JSON前,设置了正确的响应头:
Content-Type: application/json,Chrome识别到这是标准JSON数据后,会自动对不同类型的值(比如字符串、数字、布尔值)应用差异化高亮(你看到的红色就是字符串的默认高亮色)。 - 你的PHP代码直接
echo json_encode($data),Web服务器默认会返回Content-Type: text/html响应头,Chrome会把输出内容当作普通文本处理,所以所有内容都显示为黑色。
解决方法:在输出JSON之前添加响应头声明,确保Chrome识别为JSON格式:
if($sql->num_rows > 0){ // 先设置正确的JSON响应头 header('Content-Type: application/json; charset=utf-8'); while($row = $sql->fetch_assoc()){ $nestedData["name"] = $row["olduploadfilename"]; $nestedData["size"] = intval($row["uploadmissize"]); $data[] = $nestedData; } echo json_encode($data); } else { // 空数据场景也返回合法JSON,避免前端解析报错 header('Content-Type: application/json; charset=utf-8'); echo json_encode([]); }
2. "JSON Data Error: 数据并非Equuleus类型"的原因
这个错误说明前端(或你使用的Equuleus相关工具)期望接收特定结构的JSON数据,但你的输出不符合它的格式要求,常见可能性包括:
- 缺少外层结构:Equuleus可能要求JSON是一个包含固定键的对象(比如
{"code": 200, "data": [...], "msg": "success"}),但你直接返回了纯数组[...]。 - 字段名不匹配:比如Equuleus期望的字段是
filename而非name,或者fileSize而非size,需要对照目标网站的JSON结构确认差异。 - 数据类型不符:虽然你把
size转成了整数,但如果Equuleus期望该字段是字符串类型,也会触发类型错误(这种情况相对少见)。
排查建议:
- 打开Chrome开发者工具的Network面板,查看目标网站的JSON响应结构,和你的输出做逐字段对比,找出结构差异。
- 如果Equuleus有官方文档,查阅它要求的API响应格式规范,调整你的JSON输出结构。比如需要外层包裹对象的话,可以修改代码:
$response = [ 'code' => 200, 'data' => $data, 'message' => 'success' ]; echo json_encode($response);
内容的提问来源于stack exchange,提问作者user9240510
相关产品推荐
相关产品推荐

