这是我的绳子

{
    'user': {
        'name': 'abc',
        'fx': {
            'message': {
                'color': 'red'
            },
            'user': {
                'color': 'blue'
            }
        }
    },
    'timestamp': '2013-10-04T08: 10: 41+0100',
    'message': 'I'mABC..',
    'nanotime': '19993363098581330'
}    

这里的消息包含单引号,这与JSON中使用的引号相同。我所做的是从用户输入(如message)填充字符串。我需要转义那些会破坏代码的特殊场景。但是除了字符串替换之外,有没有办法让它们转义,但仍然允许HTML将它们处理回正确的消息?


当前回答

为了在json中允许双引号字符串中使用单引号,你需要双引号。{“X”:“有什么问题”}= = >{“X”:“什么”的问题”}

https://codereview.stackexchange.com/questions/69266/json-conversion-to-single-quotes

\'序列无效。

其他回答

一个JSON字符串必须是双引号,根据规范,所以你不需要转义'。 如果必须在JSON字符串中使用特殊字符,可以使用\ character进行转义。

查看JSON中使用的特殊字符列表:

\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
\\  Backslash character

然而,即使这与规范完全相反,作者也可以使用\'。

这很糟糕,因为:

这与说明书相反 它不再是JSON有效字符串

但不管你愿不愿意,它都管用。

对于新读者,总是在json字符串中使用双引号。

关于AlexB的帖子:

 \'  Apostrophe or single quote
 \"  Double quote

转义单引号只在单引号json字符串中有效 转义双引号只在双引号的json字符串中有效

例子:

'Bart\'s car'       -> valid
'Bart says \"Hi\"'  -> invalid

使用encodeURIComponent()对字符串进行编码。

Eg.:

var product_list = encodeURIComponent(JSON.stringify(product_list));

你不需要解码它,因为web服务器会自动做同样的事情。

每个人都在讨论如何转义' in '引号中的字符串字面量。这里有一个更大的问题:单引号字符串文字不是有效的JSON。JSON是基于JavaScript的,但这不是一回事。如果你在JavaScript代码中编写对象文字,没问题;如果你真的需要JSON,你需要使用”。

对于双引号字符串,您不需要转义`。(如果你确实想在字符串中使用“”,你可以使用“\”。)

也许我来的太晚了,但是这将解析/转义单引号(不想陷入解析vs转义的战斗)..

JSON.parse("\"'\"")