javascript エラー「Uncaught SyntaxError: Unexpected end of JSON input」の解決方法

javascript エラー「Uncaught SyntaxError: Unexpected end of JSON input」の解決方法

javascriptで、エラー「Uncaught SyntaxError: Unexpected end of JSON input」が発生した場合の原因と解決方法を記述してます。「JSON.parse」をjson形式でない空の配列に実行した際に発生します。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 108.0.5359.125

エラー内容

以下の、空の配列に対して「JSON.parse」を実行したコードにて発生。

const arr = [];

console.log(JSON.parse(arr));

エラーメッセージ

Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)

画像

firefox107の場合でも同じエラーが発生します。

Uncaught SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

画像

safari15.5では、以下のエラーとなります。

SyntaxError: JSON Parse error: Unexpected EOF

画像

原因

「無効な JSON」に対して「JSON.parse」を使用しているため

解決方法

「try-catch」を使用して、エラーハンドリングする

const arr = [];

try {

  JSON.parse(arr);

} catch (err) {

  console.log(err);

}

console.log('finish');

実行結果

または「JSON.stringify()」でJSONデータに変換してから使用します。

const arr = [];

console.log( JSON.parse(JSON.stringify(arr)) );
// []

ちなみに、空の配列ではなく、要素のある配列の場合は以下のエラーが発生します。

const arr = ["a","b","c"];

console.log(JSON.parse(arr));
// Uncaught SyntaxError: Unexpected token 'a', "a,b,c" is not valid JSON at JSON.parse (<anonymous>)

const arr2 = [1,2,3];

console.log(JSON.parse(arr2));
// Uncaught SyntaxError: Unexpected non-whitespace character after JSON at position 1 at JSON.parse (<anonymous>)