ホームページ >バックエンド開発 >PHPの問題 >PHPでJSON文字列を配列に変換する方法

PHPでJSON文字列を配列に変換する方法

PHPz
PHPzオリジナル
2023-04-23 09:16:15663ブラウズ

PHP では、JSON 文字列を配列に変換する必要があることがよくあります。これはデータの操作と処理に役立ちます。結局のところ、JSON は軽量のデータ交換形式であり、多くのネットワーク インターフェイスは JSON 形式でデータを返します。

それでは、PHP で JSON 文字列を配列に変換するにはどうすればよいでしょうか?以下に紹介しましょう。

  1. json_decode() 関数を使用する

PHP では、json_decode() 関数を使用して JSON 文字列を PHP 配列に変換できます。 json_decode() 関数の構文は次のとおりです。

mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

このうち、パラメータ $json は変換対象の JSON 文字列です。 $assoc パラメータはオプションで、デフォルト値は FALSE です。TRUE に設定すると、変換された配列は連想配列になります。 $ Depth パラメータはオプションであり、JSON 文字列を再帰的に解析する深さを示します。この深さを超える JSON 文字列は NULL に変換されます。 $options パラメーターはオプションであり、JSON 解析オプションを表し、JSON_BIGINT_AS_STRING、JSON_OBJECT_AS_ARRAY、または JSON_THROW_ON_ERROR に設定できます。

JSON 文字列を配列に変換する例:

$json_str = '{"name": "Tom", "age": 20, "gender": "male"}';
$arr = json_decode($json_str, true);

print_r($arr);

出力結果:

Array
(
    [name] => Tom
    [age] => 20
    [gender] => male
)
  1. 中国語文字化け問題の解決

JSON 文字列に中国語が含まれている場合、変換された配列で文字化けが発生する可能性があります。現時点では、JSON_UNESCAPED_UNICODE オプションを使用して、すべての非 ASCII 文字を 16 進エンコードから除外する必要があります。

次は、JSON_UNESCAPED_UNICODE オプションの使用例です:

$json_str = '{"name": "汤姆", "age": 20, "gender": "男"}';
$arr = json_decode($json_str, true, 512, JSON_UNESCAPED_UNICODE);

print_r($arr);

出力結果:

Array
(
    [name] => 汤姆
    [age] => 20
    [gender] => 男
)
  1. JSON 文字列内の特殊文字の問題の解決

JSON 文字列には、< または > または & 記号で構成されるコンテンツなどの特殊文字が含まれる場合があります。これらの特殊文字は JSON 構文仕様でエスケープする必要がありますが、インターフェイスから返される一部の JSON 文字列はエスケープされません。

現時点では、JSON_UNESCAPED_SLASHES オプションを使用して、これらの特殊文字がエスケープされないようにする必要があります。

次は、JSON_UNESCAPED_SLASHES オプションの使用例です:

$json_str = '{"name": "<Tom>", "age": 20, "gender": "&male&"}';
$arr = json_decode($json_str, true, 512, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

print_r($arr);

出力結果:

Array
(
    [name] => <Tom>
    [age] => 20
    [gender] => &male&
)

上記は、PHP で JSON 文字列を配列に変換する方法です。お役に立てば幸いです。

以上がPHPでJSON文字列を配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。