31
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPのjson_decode()はデコードに失敗した場合nullを返す

Posted at

調べればすぐだったのに、勘違いにより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 = 値が取れてないみたいな固定概念無くします。反省。

反省したところで、、、最後に弊社の紹介をさせてください。

ペーペーながら、わたくしも面接にも参加させてもらってます。
ご興味ある方、ぜひお話しさせてください。

31
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?