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

今回は、PHPで取得したJSON・XMLデータを、PHPで扱えるオブジェクト・連想配列に変換する例となります。

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リクエスト送信時のオプションの指定や、例外処理を実装して外部データを取得する方法もあります。

詳しくは、以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はこちらから。

また、コメントは承認制となります。