【PHP】JSON・XMLデータを取得し、オブジェクト・連想配列に変換する例

今回は、PHPで取得したJSON・XMLデータを、オブジェクト・連想配列に変換する例となります。
JSONデータをオブジェクト・連想配列に変換する例
以下は、APIなどで外部のJSONデータを取得した際に、レスポンスデータをjson_decode関数でオブジェクト・連想配列にそれぞれ変換する例となります。
// JSONデータを返すAPIのエンドポイント
$url = 'https://example.com/XXXXXXXX';
// JSONデータを読み込み
$json = file_get_contents($url);
// 読み込んだデータ内の文字列をUTF-8に変換
$json = mb_convert_encoding($json, 'UTF-8', 'ASCII, JIS, UTF-8, eucJP-win, SJIS-win');
// オブジェクトに変換する場合
$obj = json_decode($json);
// 連想配列に変換する場合
$array = json_decode($json, true);
上記例では、まず、file_get_contents関数で読み込んだJSONデータを、mb_convert_encoding関数でUTF-8の文字コードに変換します。
mb_convert_encoding関数では、第1引数に変換する文字列を指定します。そして、第2引数には変換後、第3引数には変換したい文字エンコーディングを指定します。
そして、JSONデータを変換できるjson_decode関数を利用し、オブジェクト・連想配列にそれぞれ変換しています。
なお、json_decode関数で連想配列に変換する場合は、第2引数に trueを指定します。
XMLデータをオブジェクト・連想配列に変換する例
以下は、APIなどで外部のXMLデータを取得した際に、レスポンスデータをオブジェクト・連想配列にそれぞれ変換する例となります。
// XMLデータを返すAPIのエンドポイント
$url = "https://example.com/XXXXXXXX";
// XMLデータを読み込み
$xml = file_get_contents($url);
// オブジェクトに変換する場合
$obj = simplexml_load_string($xml);
// 連想配列に変換する場合
$array = json_decode(json_encode($obj), true);
上記例では、まず、file_get_contents関数で読み込んだXMLデータを、simplexml_load_string関数を使いオブジェクトに変換しています。
連想配列に変換する場合には、json_encode関数でオブジェクトのデータをJSONデータに変換し、そのJSONデータをjson_decode関数で連想配列に変換しています。
なお、json_decode関数で連想配列に変換する場合は、第2引数に trueを指定します。
file_get_contents関数以外で外部データを読み込む方法
今回の例では、外部データを読み込む際にfile_get_contents関数を利用しましたが、APIリクエスト送信時のオプションの指定や、例外処理を実装して外部データを取得する方法もあります。
詳しくは、以下のリンク先を参考にしてみてください。