PHPアレイをJSONに変換することは、開発で発生する一般的な操作ですが、プロセス中にいくつかの問題が必然的に発生します。この記事では、いくつかの一般的なエラータイプと対応するデバッグメソッドをまとめて、変換の問題をすばやく見つけて解決するのに役立ちます。
循環参照が配列に存在する場合、 json_encode()を呼び出すと、エラープロンプトなしで失敗することがよくあります。これは、配列要素が互いに参照し、エンコードがデッドループに落ちる原因となるためです。
解決策は、循環参照を回避するか、 json_encode()を呼び出すときにjson_unescaped_slashesオプションを追加して、逃げたスラッシュを無視しようとすることです。したがって、この種の問題を軽減します。
$array = ['foo', ['bar' => $array]]; // リサイクルリファレンス
$json = json_encode($array, JSON_UNESCAPED_SLASHES); // 解决リサイクルリファレンス问题
JSONでは、文字列がUTF-8エンコードである必要があります。入力配列の文字エンコードが正しくない場合、生成されたJSONが文字化けする可能性があります。
PHPファイルとエディターの両方がUTF-8エンコーディングを使用し、 json_encode()でjson_unescaped_unicodeオプションを使用するか、 mb_convert_encoding()関数を使用してアレイ要素をUTF-8エンコーディングに変換することをお勧めします。
JSON形式が厳密に必要であり、引用符やコンマの不足により、解析が失敗します。
出力JSON文字列形式は、デバッグ中に慎重にチェックする必要があり、オンラインJSON検証ツールで形式を検証できます。
次のように配列があるとします。
$array = [
'name' => 'John Doe',
'age' => 30,
'address' => [
'street' => 'Main Street',
'city' => 'Anytown'
]
];
JSONに変換するコード:
$json = json_encode($array, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
echo $json; // 出力:{"name":"John Doe","age":30,"address":{"street":"Main Street","city":"Anytown"}}
上記の手順を通じて、一般的な問題は効果的に回避でき、JSONデータの正しさと完全性を確保できます。