gpt4 book ai didi

php - 为什么 jQuery.parseJSON 不接受换行符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:59:30 24 4
gpt4 key购买 nike

好的,所以我一直在处理一个 PHP 5.3 服务器返回一个手工制作的 JSON(因为在 5.3 中 json_encode 函数中没有 JSON_UNESCAPE_UNICODE)并且在阅读之后this thread并做了一些测试,我想我在 jQuery 的 parseJSON 函数中发现了一个问题。

假设我有以下 JSON:

{
"hello": "hi\nlittle boy?"
}

如果您使用 jsonlint.com 检查它你可以看到它是有效的 JSON。但是,如果您尝试以下操作,则会收到一条错误消息:

$(function(){
try{
$.parseJSON('{ "hello": "hi\nlittle boy?" }');
} catch (exception) {
alert(exception.message);
}
});​

Link to the fiddle .

我打开了一个 bug report在 jQuery 上,因为我认为这是一个正确的错误。你怎么看?

最佳答案

这不是错误,它与 JavaScript 中字符串文字的处理方式有关。当你有:

'{ "hello": "hi\nlittle boy?" }'

...您的字符串将被解析为:

{ "hello": "hi
little boy?" }

...之前它被传递给parseJSON()。这显然不是有效的 JSON,因为 \n 已被转换为“hi little boy?”中间的文字换行符。字符串。

您希望 '\n' 序列在转换为文字换行符之前进入 parseJSON() 函数。为此,它需要在文字字符串中被转义两次。喜欢:

'{ "hello": "hi\\nlittle boy?" }'

示例:http://jsfiddle.net/m8t89/2/

关于php - 为什么 jQuery.parseJSON 不接受换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com