【JavaScript】JSON.parse()でエラー(リテラルの不正な制御文字)
- 2021.07.07
- JavaScript
- JSON, 制御文字
とある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」まで取り除くかの違い。
制御文字の一覧(参考)
-
前の記事
【jQuery】スマホのロングタップ(長押し)イベントの実装 2021.05.07
-
次の記事
【Javascript】Fetchを使ってサーバ(PHP)とデータのやり取りをする 2022.02.06
コメントを書く