LaravelとGoogle:Invalid JSON payload receivedエラー対策

Laravelと連携:Excel・PDF・Google

LaravelとGoogleスプレッドシート連携時、このエラーがでたときの対策です。

データベースにnullが含まれている場合は、このエラーが出る可能性があり。

Google\Service\Exception : {
“error”: {
“code”: 400,
“message”: “Invalid JSON payload received.

わたしは原因がつかめず、長々と

じゅんこ
じゅんこ

なぜだめなの~!?

と、四苦八苦しました。

この記事が同じような思いをしている方の役に立てば、苦労も報われます!

LaravelとGoogle:Invalid JSON payload receivedエラー対策

問題の対策としては、nullの値を空文字列に変換すること。

array_mapを使ったりすると、実現できます。

array_mapとは、配列の各要素に、何らかの処理を適用できます。

array_mapについてPHP公式マニュアルより:

array (および、 それ以上の配列が与えられた場合は arrays) の各要素に callback を適用した後、 適用後の要素を含む array を返します。 callback 関数が受け付けるパラメータの数は、 array_map() に渡される配列の数に一致している必要があります。

*引用元:https://www.php.net/manual/ja/function.array-map.php

array_mapを使って、null値を空文字に変換するコード例はこちら。

コードの意味データベースからtestテーブルの値を全て取得して、これを配列に変換し、$testsに代入。

foreachで$testsをひとつずつにばらします。

ひとつずつの要素の中に null値があれば、空文字列に変換。

これを配列にセット。

このようにnull値をなくせば、エラーを回避できるかと思います。

じゅんこ
じゅんこ

もし他の原因であれば、ごめんなさい。

全体のコード例は、GoogleスプレッドシートとLaravelの連携を解説した記事に載せているので、併せて参考にしてくださいね。

なお今回のようなエラーが起こる原因は、Laravelでは、デフォルトでNullが入るように設定されているため。

LaravelとNullの関係?については、別記事にまとめたので、気になったらご覧ください。

コメント

タイトルとURLをコピーしました