可以使用双引号JSON的转义字符

时间:2016-01-04 10:37:54

标签: angularjs json

我有一个没有转义字符的json,我的代码无法解析,因为没有转义字符。我可以通过在双引号之前添加\来使其工作。但是,由于某些限制,我正在寻找一种解决方法,我想知道 -

一个。有没有其他方法我可以使这个json工作没有转义字符和带双引号的内容按原样显示在我的应用程序上,或

湾在所有双引号之前我是否一定需要一个转义字符并且没​​有解决方法?

"abc": {
    "x1": {
        "text1": "key1",
        "text2": "Given "Example text" is wrong"
    }
}

谢谢!

2 个答案:

答案 0 :(得分:5)

你的例子是无效的JSON,但我想你知道。 : - )

  

我必须在所有双引号

之前使用转义字符

是的,在JSON字符串中使用"的唯一方法是使用某种转义。与JavaScript不同,JSON没有' - 分隔字符串或反引号分隔的模板,这些模板成为字符串(ES2015中的新功能)。您可以使用几种不同的转义序列(例如\"\u0022),但它们仍然是转义序列。毕竟,"是JSON解析器知道它找到字符串结尾的方式。

在HTML的特定情况中,如果您将字符串解释为HTML,则还可以使用"(命名字符实体)。但这并没有改变你需要正确转义字符串的事实(因为换行符和其他几个字符也需要转义,而不仅仅是")。

我的经验是,生成JSON的最佳方法是在内存中生成一个结构,然后使用环境的工具将该结构转换为有效的JSON。在JavaScript中,JSON.stringify;在PHP中,它是json_encode;您可以找到的任何语言或环境都有一个JSON库(内置或不内置)。

答案 1 :(得分:1)

您应该添加escape char()以获得有效的JSON。 根据{{​​3}},这是JSON中使用的特殊字符列表:

  • \ b Backspace(ascii code 08)
  • \ f表单提要(ascii代码0C)
  • \ n新行
  • \ r回车
  • \ t Tab
  • \“双重报价
  • \ Backslash caracter