サイト制作に関するメモ書き

HOME > PHP > PHPでjson_encodeとjson_decodeを使ってみる

PHPでjson_encodeとjson_decodeを使ってみる

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"}"

json_encodeのデモページ

第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_encodeのデモページ2

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のデモページ
 

【参考サイト】

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

▲PAGE TOP