{category}

PHP - API操作

JSON解析

ジェイソン かいせき(ネットワーク・API・データ交換

意味 JSONデータを扱う処理


JSON解析とは?

JSON解析は、JSON(JavaScript Object Notation)形式のデータを読み取り、プログラムで使用できる形式に変換する処理です。PHPでは、json_decode()関数を使ってJSON文字列をPHPのオブジェクトや配列に変換します。これにより、APIからのレスポンスなど、JSON形式のデータを簡単に操作できるようになります。

JSON解析の具体的な使い方

JSON文字列の解析と操作

<?php
// JSON文字列
$jsonString = '{
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": ["読書", "旅行", "写真撮影"]
}';

// JSON文字列を解析して連想配列に変換
$data = json_decode($jsonString, true);

// 解析エラーのチェック
if (json_last_error() !== JSON_ERROR_NONE) {
    die('JSON解析エラー: ' . json_last_error_msg());
}

// データの表示
echo "名前: {$data['name']}\n";
echo "年齢: {$data['age']}\n";
echo "都市: {$data['city']}\n";
echo "趣味: " . implode(", ", $data['hobbies']) . "\n";

// データの操作
$data['age']++;
$data['hobbies'][] = "料理";

// 変更したデータをJSONに戻す
$newJsonString = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

echo "\n更新後のJSON:\n$newJsonString";
?>

👇出力結果

名前: John Doe
年齢: 30
都市: New York
趣味: 読書, 旅行, 写真撮影

更新後のJSON:
{
    "name": "John Doe",
    "age": 31,
    "city": "New York",
    "hobbies": [
        "読書",
        "旅行",
        "写真撮影",
        "料理"
    ]
}

この例では、JSON文字列を解析して連想配列に変換し、データを表示・操作しています。json_decode()を使用してJSONを解析し、エラーチェックを行っています。その後、データを操作し、json_encode()を使用して再びJSON形式に変換しています。JSON_PRETTY_PRINTオプションで整形し、JSON_UNESCAPED_UNICODEで日本語文字を適切に処理しています。

JSON解析に関するよくある質問

Q. json_decode()の返り値の型は?
A. json_decode()の返り値の型は、第二引数によって異なります。第二引数がfalse(デフォルト)の場合はstdClassオブジェクト、trueの場合は連想配列になります。JSONがnullの場合はnull、不正なJSONの場合はnullが返され、json_last_error()でエラー情報を取得できます。
Q. 大きなJSONを解析する際の注意点は?
A. 大きなJSONを解析する際は、メモリ使用量に注意が必要です。特に大量のデータを扱う場合は、ストリーミングパーサー(例:JSONストリーミングパーサー)の使用を検討するか、データを分割して処理することをお勧めします。また、php.iniのmemory_limitの設定も確認しましょう。
Q. JSON解析でよくあるエラーは?
A. JSON解析でよくあるエラーには以下があります: 1. シンタックスエラー(括弧の不一致、カンマの抜け等) 2. エンコーディングの問題(UTF-8以外の文字コードの使用) 3. 数値の精度の問題(PHPの浮動小数点数の制限) 4. NULLバイトの存在 5. 深すぎる入れ子構造 これらのエラーを回避するには、入力のバリデーションと適切なエラーハンドリングが重要です。

JSON解析が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのJSON解析やfile_get_contents()、curl_init()、stream_context_create()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


PHPを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

file_get_contents()

ファイルやURLの内容を取得

種類: HTTP リクエスト

curl_init()

cURLセッションの初期化

種類: cURL

stream_context_create()

ストリーム用のコンテキスト作成

種類: HTTP リクエスト

date()

日付・時刻のフォーマット

種類: 日付時間関数

Nginx with PHP-FPM

NginxとPHP-FPMの連携

種類: サーバー設定