API04003: 不正なJSONレスポンス
これは何を意味するか
サーバーはJSONのように見えるデータを返しましたが、それが破損しているか無効です。POSはJSON構文が壊れているため、レスポンスを解析できませんでした。
一般的な原因
- PHPの通知/警告 — JSONの前に出力されたPHP
- BOM (バイトオーダーマーク) — ファイルの先頭にある不可視文字
- エンコーディングの問題 — 文字エンコーディングの問題
- 切り捨てられたレスポンス — 転送中にレスポンスが切断された
- プラグインの出力 — プラグインが非JSONコンテンツを追加した
修正方法
1. PHPの通知を確認する
JSONの前にPHPの通知/警告があると解析が中断されます:
wp-config.phpで:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
wp-content/debug.logを確認し、問題を修正します。
2. BOM文字を確認する
一部のテキストエディタは不可視のBOM文字を追加します:
- BOMなしでPHPファイルを再保存してください
- 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であることを確認
- 問題を引き起こす特別な文字を探します