章: 第5章: Web・DB・セキュリティ
外部APIと連携するとき、データはどんな形式でやり取りされるか知っていますか?ほとんどの場合、答えはJSONです。
問題と解決策
外部サービス(決済、天気情報、SNSなど)のAPIはJSONでデータを返します。PHPの配列をそのままAPIに送ることはできませんし、APIのレスポンスをそのまま使うこともできません。
json_encode() で配列→JSON文字列、json_decode() でJSON文字列→配列(またはオブジェクト)に変換することで、PHPとAPIの間のデータ橋渡しができます。
JSON変換の比較
| 関数 | 方向 | 主なオプション |
json_encode($array) |
配列 → JSON文字列 | JSON_UNESCAPED_UNICODE(日本語をそのまま出力) |
json_decode($json, true) |
JSON文字列 → 配列 | 第2引数 true で配列、省略でオブジェクト |
json_last_error() |
エラー確認 | JSON_ERROR_NONE と比較 |
チェックポイント:
json_encode()後にjson_last_error() === JSON_ERROR_NONEを確認していますか?エンコードに失敗するとfalseが返りますが、エラーを無視すると意図しない動作につながります。
コードサンプル
<?php
$data = ['name' => 'Yui', 'age' => 22];
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
print_r(json_decode($json, true));
まとめ & 次のステップ
json_encode()で配列をJSON文字列に変換して外部に送信できますjson_decode($json, true)でJSONを配列として受け取れますJSON_UNESCAPED_UNICODEを使うと日本語がエスケープされずに出力されます- エンコード・デコード後は
json_last_error()でエラーチェックを忘れずに
次回は API呼び出し(cURL) — PHPから外部APIを呼び出す実践的な方法を学びます。