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

PHPでJSONオブジェクトを文字列配列オブジェクトに変換する方法

PHPz
PHPzオリジナル
2023-04-18 09:48:18478ブラウズ

PHP では、json_decode 関数は JSON 文字列を PHP のオブジェクトまたは配列に解析でき、json_encode 関数は PHP オブジェクトまたは配列を JSON 文字列に変換できます。しかし、場合によっては、JSON オブジェクトを文字列配列オブジェクトに変換する必要がある場合、どうすればよいでしょうか?

JSON 文字列が次のようになっているとします。

{
    "name": "Tom",
    "age": 18,
    "hobbies": ["reading", "running", "swimming"]
}

次の PHP コードを使用して、それを文字列配列オブジェクトに変換できます。

$json = '{"name":"Tom","age":18,"hobbies":["reading","running","swimming"]}';
$data = json_decode($json, true);

$keys = array_keys($data);
$values = array_values($data);

$str_arr = [];
for ($i = 0; $i < count($keys); $i++) {
    if (is_array($values[$i])) {
        $str_arr[$keys[$i]] = json_encode($values[$i]);
    } else {
        $str_arr[$keys[$i]] = (string) $values[$i];
    }
}

var_dump($str_arr);

まず、 JSON 文字列を json_decode 関数に渡し、2 番目のパラメーターを true に設定します。これは、解析された JSON を連想配列に変換することを意味します。

次に、array_keys 関数を使用して連想配列のキー名を取得し、array_values 関数を使用して連想配列の値を取得します。

次に、for ループを通じてすべてのキーの名前と値を調べ、値が配列であるかどうかを判断します。値が配列の場合は、 json_encode 関数を使用して JSON 文字列に変換します。値が配列でない場合は、キャストを使用して文字列に変換します。

最後に、キー名をキーとして使用し、文字列を値として使用して、新しい連想配列を構築します。 var_dump 関数を使用して結果を出力すると、次の出力が得られます。

array(3) {
  ["name"]=>
  string(3) "Tom"
  ["age"]=>
  string(2) "18"
  ["hobbies"]=>
  string(28) "["reading","running","swimming"]"
}

ご覧のとおり、JSON オブジェクトが文字列配列オブジェクトに正常に変換されました。その中で重要な手順は、 json_encode 関数を使用して配列を JSON 文字列に変換することです。

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

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