その他基本モジュールJSON関数
- 定義済みの定数
- json_decode
〔JSON文字列をデコードする〕
- json_encode
〔値をJSON形式に変換する〕
- json_last_error ※PHP v5.3.0+〔直近に発生したエラーを返す〕
定義済みの定数
unknown
この関数の拡張モジュールがPHP組み込みでコンパイルされているか、実行時に動的に読み込まれている場合のみ使用することができます。
下記の定数は、json_last_error()が返すエラーの型を表します(PHP v5.3.0~)。
定数 | 型 | 意味 |
---|---|---|
JSON_ERROR_NONE | integer | エラーなし。 |
JSON_ERROR_DEPTH | integer | スタックの深さが最大値を超えています。 |
JSON_ERROR_CTRL_CHAR | integer | 制御文字エラー。エンコーディングが違う可能性大です。 |
JSON_ERROR_SYNTAX | integer | 構文エラー。 |
json_decode 
JSON文字列をデコードする
unknown
mixed json_decode ( string $json[, bool $assoc[, int $depth ]] )
JSONエンコードされた文字列を受け取り、PHPの変数に変換して返します。
第1引数jsonには、デコードするJSON文字列を指定します。
オプションの第2引数assocにTRUEを指定すると、返り値のオブジェクトが連想配列形式になります。 デフォルトはFALSEです。
JSONエンコードされたデータの入れ子の深さが127を超えると、ファイルを返します。
<?
###### 返り値
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
/*
object(stdClass)#1 (5) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
["d"]=>
int(4)
["e"]=>
int(5)
}
*/
# 返り値のオブジェクトを連想配列形式にする
var_dump(json_decode($json, true));
/*
array(5) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
["d"]=>
int(4)
["e"]=>
int(5)
}
*/
###### JSON文字列を変数$objに格納
$json='{"foo-bar": 12345}';
$obj=json_decode($json);
print $obj->{'foo-bar'}; // 12345
?>
json_encode 
値をJSON形式に変換する
unknown
string json_encode ( mixed $値[, int $オプション ] )
指定した値をJSON形式の文字列にエンコードして返します。
第1引数値には、エンコードする値を指定します。 リソース型以外の型を指定することができます。 この関数は、UTF-8でエンコードされたデータのみで動作します。
オプションの第2引数オプションは、PHP_JSON_HEX_QUOT、PHP_JSON_HEX_TAG、PHP_JSON_HEX_AMP、PHP_JSON_HEX_APOSからなるビットマスクを指定します。 デフォルトは0です。
<?
$arr =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
?>
json_last_error ※PHP v5.3.0+
直近に発生したエラーを返す
unknown
int json_last_error ( void )
直近のJSONパース処理中にエラーが発生した場合は、そのエラーを整数値(定数のいずれか)で返します。
<?
// 正しい json 文字列
$json[] = '{"Organization": "PHP Documentation Team"}';
// 間違った json 文字列で、構文エラーとなります
// ここでは、クォートに " ではなく ' を使用しています
$json[] = "{'Organization': 'PHP Documentation Team'}";
foreach($json as $string){
echo 'Decoding: ' . $string;
json_decode($string);
switch(json_last_error()){
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_NONE:
echo ' - No errors';
break;
}
echo PHP_EOL;
}
/*
Decoding: {"Organization": "PHP Documentation Team"} - No errors
Decoding: {'Organization': 'PHP Documentation Team'} - Syntax error, malformed JSON
*/
?>