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