Web 開発において、JSON テクノロジーは不可欠な要素となっており、フロントエンドおよびバックエンドのデータ送信と保存に広く使用されています。 PHP 言語では、操作や処理のために JSON データを配列に変換する必要があることがよくあります。この記事ではJSONを配列に変換する方法を紹介します。
1. json_decode() 関数を使用する
PHP では、組み込み関数 json_decode() を使用して、JSON 文字列を PHP 配列に解析できます。この関数の基本的な使用法は次のとおりです。
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
このうち、パラメータ $json は解析対象の JSON 文字列を表し、 $assoc は解析されたオブジェクトをキー名の配列に変換するかどうかを表します (デフォルト)。は false、$ Depth は解析の深さを表します。デフォルトは 512 です。$options は解析オプションを表します。デフォルトは 0 です。
たとえば、次のような JSON 文字列があります:
{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}
次の PHP コードを使用して配列に変換できます:
$json = '{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}'; $arr = json_decode($json, true); print_r($arr);
出力結果は次のとおりです。
Array ( [name] => Tom [age] => 18 [hobbies] => Array ( [0] => music [1] => movies ) )
2. 変換時によくある問題への対処
実際のアプリケーションでは、一部の JSON 文字列が正しく配列に変換できないという問題が発生することがあります。その解決策。
たとえば、JSON 文字列に一重引用符や二重引用符などの特殊文字が含まれている場合、プログラムはエラーを報告するか、変換は失敗します。現時点では、文字列をエスケープすることでこの状況を回避できます。 PHP には、エスケープ用の組み込み関数 addlashes() が用意されています。
例:
$json = '{"name": "Tom\'s book", "page": "100\""}'; $json = addslashes($json); $arr = json_decode($json, true); print_r($arr);
出力結果は次のとおりです:
Array ( [name] => Tom's book [page] => 100" )
JSON がstring contains 中国語の場合、何も処理しないと変換失敗や文字化けが発生します。 PHP には、配列を JSON 文字列に変換するための組み込み関数 json_encode() が用意されており、中国語の文字化けを回避するためにパラメーターを設定できます。
例:
$arr = array('name' => '张三', 'age' => 19); $json = json_encode($arr, JSON_UNESCAPED_UNICODE); echo $json;
プログラムは次の結果を出力します:
{"name":"张三","age":19}
逆処理を実行する場合は、UTF-8 エンコード形式の JSON 文字列を使用する必要があります。それ以外の場合は同じです。コードが文字化けする問題が発生します。
JSON 文字列形式が正しくない場合、 json_decode() 関数は文字列を正しく解析できません。現時点では、まず JSON 文字列の形式検証を実行し、次にさまざまなエラーの種類に応じてそれを修正する必要があります。
例:
$json = '[{"name": "Tom", "age": 18}, {"name": "Bob", "age":19}'; $arr = json_decode($json, true); if (json_last_error() !== JSON_ERROR_NONE) { switch (json_last_error()) { case JSON_ERROR_DEPTH: echo 'JSON字符串超出最大剖析深度'; break; case JSON_ERROR_STATE_MISMATCH: echo 'JSON字符串格式错误'; break; case JSON_ERROR_UTF8: echo 'JSON字符串包含非UTF-8字符'; break; default: echo 'JSON字符串解析失败'; break; } } else { print_r($arr); }
出力結果は次のとおりです:
JSON字符串格式错误
以上がJSONを配列に変換する方法と、さまざまな問題の解決方法です。この記事が PHP 開発者に役立つことを願っています。
以上がPHPでJSONデータを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。