PHPのjson_encodeとjson_decodeの使い方についてメモ。
json_encode
json_encodeは配列やオブジェクトなどをjson形式にして返します。
$arr = array( 'str_jp' => 'ラブライブ!', 'str_en' => 'lovelive!', 'tags' => '<foo class="maki">', 'apos' => "I'm Erichika!", 'and' => 'MYTH & ROID' ); var_dump(json_encode($arr));
var_dumpで以下のように出力されます。
string(138) "{"str_jp":"\u30e9\u30d6\u30e9\u30a4\u30d6!","str_en":"lovelive!","tags":"","apos":"I'm Erichika!","and":"MYTH & ROID"}"
第2引数にオプションを指定することができます。
$arr = array( 'str_jp' => 'ラブライブ!', 'str_en' => 'lovelive!', 'tags' => '<foo class="maki">', 'apos' => "I'm Erichika!", 'and' => 'MYTH & ROID' ); echo 'Normal: ' . json_encode($arr); echo "\n\n"; echo 'Tags: ' . json_encode($arr, JSON_HEX_TAG); echo "\n\n"; echo 'Apos: ' . json_encode($arr, JSON_HEX_APOS); echo "\n\n"; echo 'Quot: ' . json_encode($arr, JSON_HEX_QUOT); echo "\n\n"; echo 'Amp: ' . json_encode($arr, JSON_HEX_AMP); echo "\n\n"; echo 'Unicode: ' . json_encode($arr, JSON_UNESCAPED_UNICODE); echo "\n\n"; echo 'All: ' . json_encode($arr, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE); echo "\n\n";
以下のような結果になります。
Normal: {"str_jp":"\u30e9\u30d6\u30e9\u30a4\u30d6!","str_en":"lovelive!","tags":"<foo class=\"maki\">","apos":"I'm Erichika!","and":"MYTH & ROID"}
Tags: {"str_jp":"\u30e9\u30d6\u30e9\u30a4\u30d6!","str_en":"lovelive!","tags":"\u003Cfoo class=\"maki\"\u003E","apos":"I'm Erichika!","and":"MYTH & ROID"}
Apos: {"str_jp":"\u30e9\u30d6\u30e9\u30a4\u30d6!","str_en":"lovelive!","tags":"<foo class=\"maki\">","apos":"I\u0027m Erichika!","and":"MYTH & ROID"}
Quot: {"str_jp":"\u30e9\u30d6\u30e9\u30a4\u30d6!","str_en":"lovelive!","tags":"<foo class=\u0022maki\u0022>","apos":"I'm Erichika!","and":"MYTH & ROID"}
Amp: {"str_jp":"\u30e9\u30d6\u30e9\u30a4\u30d6!","str_en":"lovelive!","tags":"<foo class=\"maki\">","apos":"I'm Erichika!","and":"MYTH \u0026 ROID"}
Unicode: {"str_jp":"ラブライブ!","str_en":"lovelive!","tags":"<foo class=\"maki\">","apos":"I'm Erichika!","and":"MYTH & ROID"}
All: {"str_jp":"ラブライブ!","str_en":"lovelive!","tags":"\u003Cfoo class=\u0022maki\u0022\u003E","apos":"I\u0027m Erichika!","and":"MYTH \u0026 ROID"}
| JSON_HEX_TAG | 「<」と「>」をそれぞれ「\u003C」と「\u003E」に変換。 |
|---|---|
| JSON_HEX_APOS | 「’」を「\u0027」に変換。 |
| JSON_HEX_QUOT | 「"」を「\u0022」に変換。 |
| JSON_HEX_AMP | 「&」を「\u0026」に変換。 |
| JSON_UNESCAPED_UNICODE | マルチバイトUnicode文字をそのままの形式で扱う。 |
オプションは他にもいくつかありますので、詳しくは下記をご確認ください。
PHP: json_encode – Manual
json_decode
json_decodeはjson文字列をデコードして返します。
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
echo "\n\n";
var_dump(json_decode($json, true));
echo "\n\n";
以下のような結果になります。
object(stdClass)#1 (5) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
["d"]=>
int(4)
["e"]=>
int(5)
}
array(5) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
["d"]=>
int(4)
["e"]=>
int(5)
}
第2引数を指定しない場合(false)はobject、trueを指定した場合は配列で値が返ってきます。
json_decodeのデモページ
【参考サイト】
コメントが承認されるまで時間がかかります。