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

PHPz
リリース: 2023-04-23 10:01:47
オリジナル
626 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート