【json_encode/json_decode】PHPでJSONを扱う方法
今回は、PHPでJSONを扱う方法について、json_encode関数で配列からJSON化する方法とjson_decode関数でJSONから配列化する方法に分け、簡単に解説していきます。
配列からJSON化する方法
PHPの配列や連想配列をJSON化するには、標準関数のjson_encodeを使います。
json_encode関数では、第一引数に指定した配列もしくは連想配列をJSON形式の文字列に変換できます。
$arr = array("name"=>"山田","age"=>22,"gender"=>"男性"); header('content-type: application/json; charset=utf-8'); echo json_encode($arr); // '{"name":"山田","age":22,"gender":"男性"}'と出力
上記のコードでは、このjson_encode関数を使って、nameやage、genderのキーとその値を持つ連想配列をJSON形式の文字列に変換しています。
JSONから配列化する方法
JSONからPHPの配列や連想配列にするには、標準関数のjson_decodeを使います。
json_decode関数では、第二引数をtrueにしたうえで第一引数にJSON形式の文字列を指定することで、配列もしくは連想配列に変換できます。
$json = '{"name":"山田","age":22,"gender":"男性"}'; $arr = json_decode($json,true); // 'array("name"=>"山田","age"=>22,"gender"=>"男性")'と代入
上記のコードでは、このjson_decode関数を使って、nameやage、genderのキーとその値を持つJSON形式の文字列をPHPの連想配列に変換しています。
実際にJSONを使うケース
JSONは異なる言語やシステムとデータを連携するために活用される文字列形式のデータです。
そのため、PHPでは主に、データを転送するcurl関連の関数と一緒に使われるケースが非常に多いです。
$params = array(); // POSTするリクエストデータを配列で作成 $url = "http://hoge.com/api"; // APIのURL $data = json_encode($params); // POSTするリクエストデータの配列をJSON化 $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); $arr = json_decode($result,true); // レスポンスデータのJSONを配列化
上記のコードでは、curl関連の関数を使って、リクエストデータとして配列のデータをJSON化したうえで、特定のAPIのURLに対しそのJSONをPOSTし、レスポンスデータとしてJSONを受け取り、最後に配列化しています。