JSON.parse with newline

35 浏览
0 Comments

JSON.parse with newline

为什么不能在javascript中解析带有\\n字符的json?\nJSON.parse(\'{\"x\": \"\\n\"}\')\n但是当你使用JSON.parse(JSON.stringify({\"x\" : \"\\n\"}))时,是有效的。\nhttp://www.jslint.com/{\"x\": \"\\n\"}是有效的JSON。我想知道规范对此有什么说法。\n更新:\n对于那些将此问题标记为重复的人,这个问题与“如何处理JSON中的换行符”不同。这个问题更多地是关于为什么不能在JSON中允许未转义的换行符。

0
0 Comments

在JavaScript中,"\n"不是字面字符串\n,而是包含换行符的字符串。这使得你的JSON无效。

要表示字面字符串\n,你需要用另一个反斜杠字符\\转义初始反斜杠字符:"\\n"

0
0 Comments

在这个问题中,我们需要将一个包含换行符的字符串转换为JSON对象。正确的写法是使用双反斜杠进行字符转义,例如:JSON.parse('{"x": "\\n"}')。这是因为根据rfc4627规范,在引号内可以放置所有Unicode字符,但必须对引号、反斜杠和控制字符(U+0000到U+001F)进行转义。由于换行符是一个控制字符,因此必须进行转义。

为了解决这个问题,我们需要在字符串中的换行符前添加双反斜杠进行转义。这样,JSON解析器才能正确地将字符串转换为JSON对象。在上面的例子中,我们使用JSON.parse('{"x": "\\n"}')将字符串"\\n"转换为包含换行符的JSON对象。

这种转义方法可以应用于其他需要转义的字符,例如引号或其他特殊字符。通过使用双反斜杠进行转义,我们可以确保JSON解析器能够正确地解析包含特殊字符的字符串。

0
0 Comments

在这个问题中,JSON.parse('{"x": "\n"}')会失败,因为'{"x": "\n"}'不是一个有效的JSON字符串,这是由于未转义的斜杠符号导致的。

JSON.parse()需要一个有效的JSON字符串才能正常工作。

'{"x": "\\n"}'是一个有效的JSON字符串,因为斜杠现在已经转义了,所以JSON.parse('{"x": "\\n"}')将会成功执行。

JSON.parse(JSON.stringify({"x" : "\n"}))会成功执行,因为JSON.stringify在内部转义了斜杠字符。

JSON.stringify({"x" : "\n"})的结果是{"x":"\n"},但是如果你尝试使用JSON.parse('{"x":"\n"})'来解析它,它将会失败,因为它没有被转义。由于JSON.stringify返回一个转义字符,所以JSON.parse(JSON.stringify())会成功执行。

0