PHP | json_decode(): Argument #1 ($json) must be of type string エラーの原因と修正案

PHPで発生するエラー「json_decode(): Argument #1 ($json) must be of type string ~」が発生する原因と対処・修正案について紹介しています。

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, array given in ~
致命的なエラー:キャッチされないTypeError:json_decode():引数は文字列型である必要があります

json_decode(): Argument #1 ($json) must be of type string エラーの発生原因と修正案

「json_decode(): Argument #1 ($json) must be of type string ~」というPHPエラーはjson_decode()にてJSON文字列ではない値が引数に指定されている場合に発生するエラーです。

このエラーは致命的なエラー(Fatal error)、キャッチされないタイプエラー(Uncaught TypeError)に分類されています。

このエラーは例えば以下のようなPHPコードにて発生します。
json_decode()の引数に配列を指定しているためJSONデータとして処理できずエラーとなっています。

$a = [1, 2, 3];
$b = json_decode($a, true);

「json_decode(): Argument #1 ($json) must be of type string ~」を修正するには、引数に指定している値がJSONデータであるかどうかを確認する必要があります。

また、JSONを配列に変換するjson_decode()と配列をJSONに変換するjson_encode()を間違えて利用している可能性もあるかもしれません。

json_decode()json_encode()については、以下のページで紹介しています。
関連:PHP | JSONのエンコードとデコード、お勧めオプションなど | ONE NOTES

PHP,PHP エラー

Posted by Yousuke.U