跳到主内容
版本: 1.x

API04003: JSON 响应格式错误

意义

服务器返回的数据看似是 JSON,但已损坏或无效。POS 无法解析响应,因为 JSON 语法损坏。

常见原因

  • PHP 通知/警告 — JSON 之前的 PHP 输出
  • BOM (字节顺序标记) — 文件开头的不可见字符
  • 编码问题 — 字符编码问题
  • 响应被截断 — 响应在传输过程中被中断
  • 插件输出 — 插件添加了非 JSON 内容

如何修复

1. 检查 PHP 通知

PHP 通知/警告会导致 JSON 解析出错:

wp-config.php 中:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

检查并审核 wp-content/debug.log,修复任何问题。

2. 检查 BOM 字符

某些文本编辑器可能会添加不可见的 BOM 字符:

  • 重新保存 PHP 文件,确保不带 BOM
  • 使用不带 BOM 的 UTF-8 编码
  • 检查最近编辑的文件

3. 验证完整响应

如果响应被截断:

  • 检查 PHP 输出缓冲设置
  • 增加 php.ini 中的 output_buffering
  • 检查超时问题

4. 直接测试 API

在浏览器中或使用 curl:

curl -v https://yoursite.com/wp-json/wcpos/v1/

查看 JSON 之前是否有任何意外内容。

5. 检查字符编码

确保数据库和 PHP 使用 UTF-8:

  • 检查 wp-config.php 中的字符集设置
  • 验证数据库表为 UTF-8
  • 查找导致问题的特殊字符