PHP JSON 処理のスニペット集
このページは、PHP の JSON 関連の処理のスニペットなどをまとめる予定のページです。
目次
注意
- コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。
スニペット
エンコード (JSON 文字列化)
デコード (JSON 文字列のパース)
JSON (application/json) のリクエストボディの取得
- $_POST は
Content-Type に application/x-www-form-urlencoded あるいは multipart/form-data を用いた HTTP リクエスト
が対象のため、application/json
の場合はphp://input
からデータを取得します。
ユーティリティ関数
(主にフレームワークなどを使う必要が無い小さなプログラム用の関数です)
JSON出力
/**
* JSONを出力します。
* @param mixed $data 出力データ
* @return void
*/
function echo_json($data){
header('Content-Type: application/json');
echo json_encode($data);
}
// 例:
// echo_json(array('a' => 1));
JSON データ取得
/**
* 指定の URL に GET でリクエストし、JSONを取得します。
*
* @param string $url 対象URL
* @param array $query クエリデータ
* @param boolean $assoc JSONデータを連想配列で取得する場合 true
* @return mixed JSONデータ (assoc が true の場合連想配列、false の場合 stdClass)。取得に失敗した場合 false
*/
function json_get($url, $query = array(), $assoc = false) {
if ($query) $url .= ('?' . http_build_query($query, '', '&', PHP_QUERY_RFC3986));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url); // URL
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // リクエスト先が https の場合、証明書検証をしない (環境によって動作しない場合があるため)
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_exec() 経由で応答データを直接取得できるようにする
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); // 接続タイムアウトの秒数
$responseString = curl_exec($curl); // 応答データ取得
curl_close($curl);
return ($responseString !== false) ? json_decode($responseString, $assoc) : false;
}