繁体   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