こんにちは、さるまりんです。
以前PHPでJSONを返すプログラムを書きました。
その時、配列をjsonにするために
json_encode()
関数を使いました。では反対にjsonを配列にするにはどうするかのメモです。
まずは元配列の作成です。
$original = [
'num1' => 1,
'num2' => 2,
'strings' => [
'str1' => 'hello',
'str2' => 'world',
'str3' => "I'm fine"
]
];
これを
print_r()
で出力するとこうなります。Array
(
[num1] => 1
[num2] => 2
[strings] => Array
(
[str1] => hello
[str2] => world
[str3] => I'm fine
)
)
まずはそれをjsonにします。
$json = json_encode($original);
この
$json
には次のような文字列が格納されています。{
"num1": 1,
"num2": 2,
"strings": {
"str1": "hello",
"str2": "world",
"str3": "I'm fine"
}
}
(読みやすいように改行しています。)
この
$json
を配列にします。$data = json_decode($json, true);
$data
をprint_r()
で出力するとこうなります。Array
(
[num1] => 1
[num2] => 2
[strings] => Array
(
[str1] => hello
[str2] => world
[str3] => I'm fine
)
)
元に配列に戻りました。
この
json_decode()
関数の二つ目の引数にtrue
を指定することで、結果を連想配列で取得します。これを省略するか
false
を指定するとstdClass
のオブジェクトで取得します。$data = json_decode($json);
上記で取得した結果を
print_r()
するとこうなります。stdClass Object
(
[num1] => 1
[num2] => 2
[strings] => stdClass Object
(
[str1] => hello
[str2] => world
[str3] => I'm fine
)
)
JSONのAPIはよく利用するので、覚えておきたいです。
なぜ忘れるんだろう?
読んでくださってありがとうございました。
それではまた!