PHPでJSONから値を正しく取得する方法をわかりやすく解説
JSONから値を取得する基本:json_decode()の使い方
JSON形式のデータから特定の値を取り出すには、PHPのjson_decode()関数を使用します。この関数を使うと、JSON文字列をPHPの配列やオブジェクトに変換でき、その後は通常の配列アクセスと同じ要領で目的の値を取得できます。
例として、以下のようなJSONデータを想定します。
$detailsJsonObject = '{"details":[{"name":"John","subjectDetails":{"subjectId":"101","subjectName":"PHP","marks":"58","teacherName":"Bob"}}]}';このデータから「教科名(subjectName)」や「担当教師名(teacherName)」といった特定の値を取り出す方法を見ていきましょう。
サンプルコード
以下が実際のPHPコードです。
<!DOCTYPE html>
<html>
<body>
<?php
$detailsJsonObject = '{"details":[
{"name":"John","subjectDetails":
{"subjectId":"101","subjectName":"PHP","marks":"58",
"teacherName":"Bob"}
}]}';
// 第2引数にtrueを指定すると連想配列として取得できる
$convertToArrayObject = json_decode($detailsJsonObject, true);
$actualSubjectName = $convertToArrayObject['details'][0]['subjectDetails']['subjectName'];
$actualTeacherName = $convertToArrayObject['details'][0]['subjectDetails']['teacherName'];
echo "The Subject Name is=", $actualSubjectName, "<br>";
echo "The Teacher Name is=", $actualTeacherName;
?>
</body>
</html>実行結果
上記のコードを実行すると、以下のような出力が得られます。
The Subject Name is=PHP The Teacher Name is=Bob
ポイント解説
json_decode()の第2引数にtrueを渡すと、JSONデータが連想配列に変換されます。これにより、$array['key']の形式で直感的に値へアクセスできます。第2引数を指定しない場合はstdClassオブジェクトとして返されるため、$object->keyの形式でアクセスすることになります。
また、今回のようにネスト(入れ子)されたJSON構造を扱う場合は、['details'][0]['subjectDetails']['subjectName']のように、データの階層構造に沿って順番にキーを指定していくことが重要です。配列の要素にアクセスする際はインデックス番号(0から始まる)も忘れずに指定しましょう。
-
C#の列挙型(enum)からint値を取得する方法をわかりやすく解説
C#では、列挙型(enum)の値を整数値として扱いたい場面がよくあります。例えば、データベースへの保存やAPIとの連携などがその代表例です。そんなときは、明示的なキャスト(型変換)を使うだけで、簡単にint値を取得できます。 手順1:列挙型を定義する まず、次のように列挙型を定義します。 public enum Vehicle { Car, Bus, Truck } 手順2:(int)でキャストしてint値を取得する 列挙型の値をintに変換するには、(int)による明示的なキャストを使用します。 int a = (int)Vehicle.Car; 完全なサンプルコード 以下は、列挙型の
-
PythonでJSON入力から辞書(dict)を作成する方法をわかりやすく解説
Pythonでは、標準ライブラリのjsonモジュールを使うことで、JSONファイルを簡単に解析(パース)できます。このモジュールはJSONデータを読み込み、Pythonの辞書(dict)へと変換します。変換後は、通常の辞書とまったく同じようにキーを指定して値を取得したり、ループ処理したりすることが可能です。サンプルとなるJSONファイル例えば、以下のような内容のJSONファイル(data.json)が存在するとします。{ id: file, value: File, popup: { menuitem: [ {value: New