Web アプリケーションの開発過程では、文字列を処理するだけでは不十分で、異なるプログラミング言語間のデータ変換が必要になることがよくあります。 PHP では、JSON 文字列をオブジェクトの配列に変換する必要があります。ここでは、JSON を PHP オブジェクトの配列に変換する方法について説明します。
JSON (JavaScript Object Notation) は、読み取りと書き込みが簡単で、マシンによる解析と生成も簡単な軽量のデータ交換形式です。 JSON は基本的なデータ型で構成されており、最も一般的なデータ型には、文字列、数値、配列、ブール値、オブジェクト、および null 値が含まれます。 JSON は、クライアントとサーバー間の標準的なデータ転送形式になりました。
PHP には、JSON 文字列を配列またはオブジェクトに簡単に変換できる JSON 処理関数が組み込まれています。 PHP で最も一般的に使用される関数は、json_decode() 関数です。この関数は、JSON 文字列を PHP 変数 (配列またはオブジェクト) に変換します。 json_decode() 関数は、変換される JSON 文字列と返されるデータ型 (デフォルトはオブジェクト) の 2 つのパラメータを取ります。簡単な例を次に示します。
$json_string = '{"name":"John","age":30,"city":"New York"}'; $obj = json_decode($json_string); print_r($obj);
出力:
stdClass Object ( [name] => John [age] => 30 [city] => New York )
デフォルトでは、 json_decode() 関数はオブジェクトを返します。配列を返すように変更することもできます。
$json_string = '{"name":"John","age":30,"city":"New York"}'; $arr = json_decode($json_string, true); print_r($arr);
出力:
Array ( [name] => John [age] => 30 [city] => New York )
上の例では、2 番目のパラメーターを使用して戻り値の型を配列として指定しました。この関数は、JSON 文字列を解析するときに、より複雑なルールに従います。詳細については、公式ドキュメントを確認してください。
複数の JSON オブジェクトを含む JSON 文字列を処理する場合は、 json_decode() 関数を呼び出すときに追加のパラメーター JSON_BIGINT_AS_STRING を追加できます。これにより、ハンドラーが JSON 文字列内の大きな数値を浮動小数点数に変換しなくなります。これは、1 つ以上の CUIDS (顧客 ID) を一意に保つ必要があるため、これらの ID を含むログ イベントを処理する場合に特に便利です。
これは例です:
$json_string = '[{"name":"John","age":30,"city":"New York"},{"name":"Mike","age":35,"city":"Chicago"}]'; $arr = json_decode($json_string, true, 512, JSON_BIGINT_AS_STRING); print_r($arr);
出力:
Array ( [0] => Array ( [name] => John [age] => 30 [city] => New York ) [1] => Array ( [name] => Mike [age] => 35 [city] => Chicago ) )
上記の例では、JSON_BIGINT_AS_STRING パラメーターを渡しました。これは、JSON 文字列で次のことが可能であることがわかっているためです。大きな整数である必要があります。この状況に対処し、これらの数値が浮動小数点数に変換されないようにすることが重要です。
JSON はフロントエンドとバックエンドのデータ転送で非常に一般的な形式であるため、JSON の処理方法を学ぶことが重要です。 PHP では、組み込みの json_decode() 関数を使用して、JSON 文字列をオブジェクトの配列に簡単に変換できます。この関数と関連パラメータを適切に使用できれば、PHP で JSON データを簡単に扱い、データを迅速、効率的、安全に処理できます。
以上がjsonをオブジェクト配列phpに変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。