まず前提として、DBから日本語文字列を含むデータを取得し、JSON形式で返すというAPIの話だ。

また、このAPIは外部サーバーから使えるようにするものとする。

<?php
// これが無いと外部サーバーからAPIを利用できない
header("Access-Control-Allow-Origin: *");

/* APIの処理
... 
*/ 

$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

echo $json;

今回のテーマは、json_encode関数の使い方。

引数にエンコードの際のオプションを「|(パイプ)」区切りで指定できるのだが、まずJSON_UNESCAPED_UNICODEが無いと日本語が全て「\uXXXX」の形式に変換されてしまう。

そして、JSON_PRETTY_PRINTを付けることで、出力するJSONを綺麗に整形してくれる。

先に述べた前提条件の上でAPIを作成する場合は、この二つのオプションは必須となるだろう。