PHPで扱うJSONデータ!初心者でもわかるjson_decodeの使い方7選

PHPのjson_decodeを使ったJSONデータの操作方法を示すイメージPHP
この記事は約8分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミングの世界は日々進化しており、新しい技術が常に出てきていますが、それでも中心的な技術の一つであるPHPはその重要性を保ち続けています。

特に、データの取り扱いにおいて重要となるのがJSON形式です。

この記事を読めば、PHPで扱うJSONデータの読み取りに必要なjson_decode関数の使い方を7つ理解し、実装することができるようになります。

●PHPとは?

PHPは、「Personal Home Page Tools」の略称から始まったプログラミング言語で、主にWeb開発で広く使われています。

初心者でも扱いやすいシンタックスと、強力なWebアプリケーションを作成するための多機能性から、多くの開発者に愛されています。

○PHPの基本

PHPの一番の特徴は、HTML内に直接記述することができる点です。

これにより、データベースからデータを取り出して動的なWebページを生成することが容易になります。

また、PHPはサーバーサイドの言語なので、ブラウザに表示する前にサーバーで処理が行われます。

●json_decodeとは?

json_decodeはPHPにおいてJSON形式の文字列を扱うための関数です。

この関数を用いることで、JSON形式の文字列をPHPの変数として扱うことが可能になります。

○json_decodeの基本

json_decode関数は、JSON形式の文字列をPHPの値に変換します。

デフォルトでは、JSONオブジェクトはPHPのオブジェクトとして、JSON配列はPHPの配列として返されます。

●json_decodeの使い方

ここでは、具体的なコード例を用いてjson_decode関数の使い方を見ていきましょう。

○サンプルコード1:シンプルなJSONデータの読み込み

次のサンプルコードでは、シンプルなJSONデータを読み込み、その内容を表示する例を示します。

この例では、json_decodeを使ってJSONデータをPHPのオブジェクトに変換しています。

$json = '{"name":"John", "age":30, "city":"New York"}';
$obj = json_decode($json);

echo $obj->name; // John

○サンプルコード2:配列としてJSONデータを読み込む

次のサンプルコードでは、json_decode関数の第二引数にtrueを設定することで、JSONデータをPHPの連想配列として読み込む例を表します。

$json = '{"name":"John", "age":30, "city":"New York"}';
$array = json_decode($json, true);

echo $array['name']; // John

以上のコードを実行すると、’John’が表示されます。

JSONオブジェクトのプロパティは連想配列のキーとなります。

○サンプルコード3:深いネストを持つJSONデータの読み込み

次のサンプルコードでは、深いネストを持つJSONデータを読み込む例を示します。

この例では、json_decode関数を使ってJSONデータをPHPのオブジェクトに変換し、そのプロパティにアクセスしています。

$json = '{"person":{"name":"John", "age":30, "city":"New York"}}';
$obj = json_decode($json);

echo $obj->person->name; // John

このコードを実行すると、’John’という結果が表示されます。

ネストしたJSONオブジェクトのプロパティにアクセスするには、PHPオブジェクトのプロパティに順にアクセスすることで可能となります。

○サンプルコード4:JSONデータのエラーハンドリング

次に、json_decode関数でJSONデータのパース中にエラーが発生した場合のエラーハンドリングを扱うサンプルコードを見ていきましょう。

$json = '{"person":{"name":"John", "age":30, "city":"New York"'; // Missing closing bracket
$obj = json_decode($json);

if (json_last_error() != JSON_ERROR_NONE) {
    echo json_last_error_msg(); // Syntax error
}

ここでは、json_last_error関数を使って最後に発生したエラーを確認し、その結果に基づいてエラーメッセージを表示しています。

●json_decodeの応用例

次に、json_decode関数のより実践的な使用例を見ていきましょう。

○サンプルコード5:JSONファイルからデータを読み込む

json_decodeは、ファイルから直接JSONデータを読み込む際にも役立ちます。

次のサンプルコードでは、file_get_contents関数を使ってJSONファイルの内容を取得し、その後json_decodeでJSONデータをパースしています。

$json = file_get_contents('data.json');
$data = json_decode($json, true);

echo $data['name']; // John (Assuming 'data.json' contains {"name":"John", "age":30, "city":"New York"})

この例では、JSONデータがファイル’data.json’に保存されており、その内容が連想配列として読み込まれています。

次に、json_decode関数を使った具体的なデータ処理の例を見ていきましょう。

○サンプルコード6:json_decodeを使ったデータ処理

以下のコードでは、json_decode関数を使用してJSONデータを読み込み、その後でデータの処理を行う例を表しています。

$json = '{"persons":[{"name":"John", "age":30, "city":"New York"},{"name":"Jane", "age":25, "city":"Chicago"}]}';
$data = json_decode($json, true);

foreach ($data['persons'] as $person) {
    echo "Name: " . $person['name'] . ", Age: " . $person['age'] . ", City: " . $person['city'] . "\n";
}

// 出力
// Name: John, Age: 30, City: New York
// Name: Jane, Age: 25, City: Chicago

この例では、複数の人物データを含むJSONデータをパースし、それぞれの人物の情報を出力しています。

○サンプルコード7:json_decodeを利用したWeb APIの呼び出し

多くのWeb APIはJSON形式のデータを返すため、json_decodeはAPIの応答を解析するのに非常に便利なツールとなります。

下記のサンプルコードでは、外部APIからJSON形式のデータを取得し、そのデータをパースする方法を表しています。

$response = file_get_contents('https://api.example.com/data');
$data = json_decode($response, true);

foreach ($data as $item) {
    echo $item['name'] . "\n";
}

このコードでは、file_get_contents関数を使用してAPIからJSONデータを取得し、その後でjson_decode関数でそのデータを連想配列としてパースしています。

最後に、各アイテムの名前が出力されます。

ただし、このコードが動作するためには、’https://api.example.com/data’が有効なAPIエンドポイントであり、その応答が期待するJSON形式である必要があります。

●json_decodeの注意点と対処法

json_decode関数は非常に便利ですが、使用する際にはいくつか注意が必要です。

特に、エンコーディングの問題やエラーハンドリングは重要な観点となります。

JSONは基本的にUTF-8エンコーディングを使用しますが、違うエンコーディングのデータを扱う場合は変換が必要になる場合があります。

また、json_decodeはデフォルトでオブジェクトを返しますが、連想配列としてデータを受け取りたい場合は第二引数にtrueを指定する必要があります。

また、json_decodeは無効なJSONデータをパースしようとするとfalseを返します。

このため、json_decodeの返り値をチェックし、必要に応じてエラーハンドリングを行うことが重要です。

まとめ

以上が、PHPでのjson_decodeの基本的な使い方とその応用についての説明です。

JSONは現代のWebアプリケーションで広く使われているデータ形式であり、その扱い方を理解することは非常に重要です。

また、特にAPIとの通信でJSONが頻繁に使われるため、json_decodeを使ったデータのパースと操作は、あなたのPHPコーディングスキルを向上させるのに役立つでしょう。

これらの基本的な例を参考に、自身のプロジェクトでのjson_decodeの使用方法を探ってみてください。