調べればすぐだったのに、勘違いにより1時間くらい無駄にしたので備忘のために残します。
悔しい。
サクッと理解したい人
参考記事:https://www.php.net/manual/ja/function.json-decode.php
json のデコードに失敗したり エンコードされたデータがネストの最大値を超えているなどの場合、null を返します。
てっきりエラーが表示されるのかと思ってました。
デコードに失敗した時はエラーではなくnullが返ります。
デコードってなに
(デコードとエンコードいつもわからなくなっちゃう)
デコードとは、JSONをオブジェクトに変換することです。
逆にエンコードは値をJSON形式に変換することです。
今回失敗したパターン
今回、デコードするために渡したJSONがダブルクォーテーションで囲われていない値があり、デコードに失敗しnullとなっていました。
失敗例
<?php
$json = '{ hoge: "hoge" }';
var_dump(json_decode($json)); // null
?>
成功例
<?php
$json = '{ "hoge": "hoge" }';
var_dump(json_decode($json));
?>
その他の間違い例
シングルクォートはNG
シングルクォートはNG
<?php
$json = '{ 'hoge': 'hoge' }';
var_dump(json_decode($json)); // null
?>
最後にカンマをつけるのはNG
最後にカンマをつけるのはNG
<?php
$json = '{ "hoge": "hoge", }';
var_dump(json_decode($json)); // null
?>
最後に
なんでエラー出るって思っちゃってたんですかね
null = 値が取れてないみたいな固定概念無くします。反省。
反省したところで、、、最後に弊社の紹介をさせてください。
ペーペーながら、わたくしも面接にも参加させてもらってます。
ご興味ある方、ぜひお話しさせてください。