PHP で JSON からデータを抽出する方法
Minahil Noor
2021年3月5日
この記事では、PHP で JSON からデータを抽出する方法を紹介します。
json_decode()
関数を使用する
PHP で JSON からデータを抽出するには json_decode()
関数を使用する
JSON からデータを抽出するには、組み込み関数 json_decode()
を利用します。JSON の文字列をオブジェクトや配列に変換してデータを抽出します。この関数を利用するための正しい構文は以下の通りです。
json_decode($jsonString, $assoc, $depth, $options);
組み込みの関数 json_decode()
は 4つのパラメータを持ちます。パラメータの詳細は以下の通りです。
パラメータ | 説明 | |
---|---|---|
$jsonString |
必須 | これはデータを抽出したい JSON エンコードされた文字列です。 |
$assoc |
オプション | これは Boolean 変数です。これが TRUE の場合、この関数は連想配列を返します。FALSE の場合はオブジェクトを返します。 |
$depth |
オプション | 整数です。指定した深さを指定します。 |
$options |
オプション | JSON_BIGINT_AS_STRING 、JSON_INVALID_UTF8_IGNORE 、JSON_INVALID_UTF8_SUBSTITUTE 、JSON_OBJECT_AS_ARRAY 、JSON_THROW_ON_ERROR のビットマスクを指定しています。詳細はこちらで確認できます。 |
この関数は、JSON 文字列が適切な形式でない場合に NULL を返します。パラメータ $assoc
に応じて連想配列かオブジェクトを返します。
以下のプログラムは、JSON 文字列からデータを抽出するために json_decode()
関数を利用する方法を示しています。
<?php
$jsonString ='{
"firstName":"Olivia",
"lastName":"Mason",
"dateOfBirth":
{
"year":"1999",
"month":"06",
"day":"19"
}
}';
$data = json_decode($jsonString);
echo("The data is: \n");
var_dump($data);
?>
パラメータ $assoc
を渡していないので、この関数はオブジェクトを返します。
出力:
The data is:
object(stdClass)#1 (3) {
["firstName"]=>
string(6) "Olivia"
["lastName"]=>
string(5) "Mason"
["dateOfBirth"]=>
object(stdClass)#2 (3) {
["year"]=>
string(4) "1999"
["month"]=>
string(2) "06"
["day"]=>
string(2) "19"
}
}
パラメータ $assoc
を渡すと、この関数は連想配列を返します。
<?php
$jsonString ='{
"firstName":"Olivia",
"lastName":"Mason",
"dateOfBirth":
{
"year":"1999",
"month":"06",
"day":"19"
}
}';
$data = json_decode($jsonString, true);
echo("The data is: \n");
var_dump($data);
?>
出力:
The data is:
array(3) {
["firstName"]=>
string(6) "Olivia"
["lastName"]=>
string(5) "Mason"
["dateOfBirth"]=>
array(3) {
["year"]=>
string(4) "1999"
["month"]=>
string(2) "06"
["day"]=>
string(2) "19"
}
}
関数がオブジェクトを返した場合は、次のようにしてデータにアクセスできます。
<?php
$jsonString ='{
"firstName":"Olivia",
"lastName":"Mason",
"dateOfBirth":
{
"year":"1999",
"month":"06",
"day":"19"
}
}';
$data = json_decode($jsonString);
echo("The first name is: \n");
echo $data->firstName;
?>
この関数は、抽出されたデータから名を返します。
出力:
The first name is:
Olivia
この関数が配列を返した場合、次のようにして直接データにアクセスすることができます。
<?php
$jsonString ='{
"firstName":"Olivia",
"lastName":"Mason",
"dateOfBirth":
{
"year":"1999",
"month":"06",
"day":"19"
}
}';
$data = json_decode($jsonString, true);
echo("The first name is: \n");
echo $data['firstName'];
?>
この関数は、抽出されたデータから名を返します。
出力:
The first name is:
Olivia
配列を繰り返し処理することもできます。
<?php
$jsonString ='{
"firstName":"Olivia",
"lastName":"Mason",
"dateOfBirth": "19-09-1999"
}';
$data = json_decode($jsonString, true);
foreach ($data as $key=> $data1) {
echo $key, " : ";
echo $data1, "\n";
}
?>
この関数は抽出されたデータを返します。
出力:
firstName : Olivia
lastName : Mason
dateOfBirth : 19-09-1999