好的,所以我一直在处理PHP 5.3服务器返回一个手工制作的JSON(因为在5.3中JSON_UNESCAPE_UNICODE
函数中没有json_encode
)并在阅读this thread之后做一些测试,我想我在jQuery的parseJSON
函数中发现了一个问题。
假设我有以下JSON:
{
"hello": "hi\nlittle boy?"
}
如果使用jsonlint.com进行检查,则可以看到它是有效的JSON。但是,如果您尝试以下操作,则会收到错误消息:
$(function(){
try{
$.parseJSON('{ "hello": "hi\nlittle boy?" }');
} catch (exception) {
alert(exception.message);
}
});
我在jQuery上打开了bug report,因为我认为这是一个正确的错误。你觉得怎么样?
答案 0 :(得分:12)
这不是一个错误,它与如何在JavaScript中处理字符串文字有关。当你有:
'{ "hello": "hi\nlittle boy?" }'
...你的字符串将被解析为:
{ "hello": "hi
little boy?" }
在之前 ... 将其传递给parseJSON()
。这显然不是有效的JSON,因为\n
已经转换为“喜欢小男孩”中间的文字换行符?串。
在转换为文字换行符之前,您希望“\n
”序列转到parseJSON()
函数。为此,需要在文字字符串中将两次转义。像:
'{ "hello": "hi\\nlittle boy?" }'