make is.dev make it simple. development.
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 );
PHP

API等での出力

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としてビューワで表示される。