2024年9月17日
PHPでJSONを扱う
PHPでJSONデータを扱ってみる。
使用環境
・ Amazon Linux 2
・ PHP 8.2.9
基本サンプル
連想配列をJSON形式の文字列に変換し、その後連想配列に戻すサンプル。
<?php
$vs = [
'test1' => 1,
'test2' => '<OK>',
'test3' => "あいうえお\nかきくけこ",
'test4' => null,
];
// JSONエンコード(文字列化)
$json = json_encode( $vs );
// JSONデコード(連想配列としてデコード)
$dec = json_decode( $json, true );
PHPエンコードする内容は配列でなくても良いが、よく使われるのはデータの授受なので、基本的にはこの使い方になるはず。
デコードは連想配列ではなくオブジェクトで受け取っても良いが、使い方に大差ないので配列にしておいた方が手軽。
Unicodeのエスケープを回避
上記では日本語などマルチバイト文字がUnicodeエスケープシーケンスされて人の目には見づらくなる。
それを避ける際は、オプションを追加する。
$json = json_encode( $vs, JSON_UNESCAPED_UNICODE );
PHPAPI等での出力
APIのレスポンス等で使用する場合、MIMEタイプを指定して出力する。
<?php
$vs = [
'test1' => 1,
'test2' => '<OK>',
'test3' => "あいうえお\nかきくけこ",
'test4' => null,
];
// JSONエンコード(文字列化)
$json = json_encode( $vs );
// MIMEタイプを指定して出力
header( 'Content-Type: application/json' );
echo $json;
PHPブラウザでアクセスした場合、MIMEタイプの指定がないとただの文字列として扱われるが、MIMEタイプの指定があると、JSONとしてビューワで表示される。