json_encode関数の使い方

json_encode関数は連想配列をJSONでフォーマットされた文字列に変換します。
第一引数に変換する連想配列、第二引数にオプションの定数を指定します。返り値はJSONでフォーマットされた文字列ですが、処理に失敗するとfalseを返します。

json_encode(連想配列, 定数);

以下の連想配列をjson_encode関数でJSON形式の文字列に変換します。

<?php
$list = array(
  'web' => 'http://shop.jp/',
  'item' => array(
    'トマト' => 100,
    'キャベツ' => 120,
    'ピーマン' => 80,
  ),
);

$jsonstr = json_encode($list);
print_r($jsonstr);
?>

実行結果は以下の通りです。
JSONは文字コードがUnicodeのため、日本語はUnicode文字に変換されてしまいます。スラッシュ(/)もエスケープされます。また、1行で表示されるため見づらくなってしまいます。

{"web":"http:\/\/shop.jp\/","item":{"\u30c8\u30de\u30c8":100,"\u30ad\u30e3\u30d9\u30c4":120,"\u30d4\u30fc\u30de\u30f3":80}}

そこで、json_encode関数の第二引数に以下のオプション定数を指定します。

JSON_UNESCAPED_SLASHES:スラッシュ(/)をエスケープをしない
JSON_UNESCAPED_UNICODE:日本語をUnicode変換しない
JSON_PRETTY_PRINT:改行とインデントで整形

<?php
$list = array(
  'web' => 'http://shop.jp/',
  'item' => array(
    'トマト' => 100,
    'キャベツ' => 120,
    'ピーマン' => 80,
  ),
);

$jsonstr = json_encode($list, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
print_r($jsonstr);
?>

実行結果は以下の通りです。

{
  "web": "http://shop.jp/",
  "item": {
    "トマト": 100,
    "キャベツ": 120,
    "ピーマン": 80
  }
}
タイトルとURLをコピーしました