# API04003: JSON 响应格式错误

## 意义[​](#what-this-means "直接链接到 意义")

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

## 常见原因[​](#common-causes "直接链接到 常见原因")

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

## 如何修复[​](#how-to-fix "直接链接到 如何修复")

### 1. 检查 PHP 通知[​](#1-check-for-php-notices "直接链接到 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 字符[​](#2-check-for-bom-characters "直接链接到 2. 检查 BOM 字符")

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

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

### 3. 验证完整响应[​](#3-verify-complete-response "直接链接到 3. 验证完整响应")

如果响应被截断：

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

### 4. 直接测试 API[​](#4-test-api-directly "直接链接到 4. 直接测试 API")

在浏览器中或使用 curl：

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

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

### 5. 检查字符编码[​](#5-check-character-encoding "直接链接到 5. 检查字符编码")

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

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

## 相关错误[​](#related-errors "直接链接到 相关错误")

* [API04001](/zh-CN/error-codes/API04001.md) — 无效的响应格式
* [API04005](/zh-CN/error-codes/API04005.md) — 尝试恢复 JSON

***
