簡體   English   中英

JSON.parse:字符串文字中的錯誤控制字符

[英]JSON.parse : Bad control character in string literal

我認為這是一個基本問題,但我不明白原因。 在JSON中,“asdfadf\tadfadf”這樣的特殊字符是合法的,但是當嘗試解析它時,它顯示錯誤。 例如。 代碼:

let s = '{"adf":"asdf\tasdfdaf"}';
JSON.parse(s);

錯誤:

Uncaught SyntaxError: Bad control character in string literal in JSON at position 12
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6

我需要了解問題所在和解決方案。

您必須考慮到\t將涉及兩個解析操作:首先,當您的字符串常量被 JavaScript 解析時,其次,當您使用JSON.parse()解析 JSON 字符串時。 因此你必須使用

let s = '{"adf":"asdf\\tasdfdaf"}';

如果不這樣做,您將看到從字符串中嵌入的實際制表符看到的錯誤。 JSON 不允許在字符串中嵌入“控制”字符。

此外,如果實際的 JSON 內容是以某種方式在服務器端代碼中創建的,則跳過構建您將立即解析為 JSON 的字符串可能更容易。相反,讓您的代碼直接構建 JavaScript object 初始化程序:

let s = { "adf": "asdf\tasdfdaf" };

在你的服務器環境中,可能有一個 JSON 工具,它允許你從 PHP 或 Java 或其他任何東西中獲取數據結構,並將其轉換為 JSON,這也將作為 JavaScript 語法工作。

let t = '{"adf":"asdf\\tasdfdaf"}';

var obj = JSON.parse(t) console.log(obj)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM