【JavaScript】JSON.parse()でエラー(リテラルの不正な制御文字)
とあるJSONファイルをJSON.parse()で読み込もうとしたところ、以下のようなエラーが出た。
Uncaught SyntaxError: JSON.parse: bad control character in string literal at line ○ column ○ of the JSON data
原因
JSONファイルに、改行コードなどの特殊文字が混入している。
コンソールやテキストエディタでは表示されないため原因がわかりにくい。
解決方法
JSON.parse()する前に、以下のようにして、改行コードなどの制御文字を取り除く。
let clean_jsonText = jsonText.replace(/[\u0000-\u0019]+/g, "");
以下のコードでもうまくいった。
let clean_jsonText = jsonText.replace(/[\u0000-\u001F]+/g, "");
上記の違いは、「u0000」から「u0019」までの制御文字を取り除くか「u001F」まで取り除くかの違い。
制御文字の一覧(参考)
