第49回: JSON処理 — APIとやり取りするための必須データ変換スキル

章: 第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を呼び出す実践的な方法を学びます。

Related Articles