好吧,我一直在處理一個返回手工製作的JSON的PHP 5.3服務器(因爲在5.3中沒有JSON_UNESCAPE_UNICODE
在json_encode
函數中),在閱讀this thread並做了一些測試之後,我想我發現了一個問題jQuery的parseJSON
函數。爲什麼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,因爲我認爲這是一個適當的錯誤。你怎麼看?
嗯我真的不知道它不是一個錯誤,但。儘管如何在JavaScript中處理字符串文字,jQuery應該檢查一個字符是否爲換行符並接受它,因爲可以這樣做:http://jsfiddle.net/UTVcW/ –
@JoseTomasTocino - 他們可以這樣做,是的。但他們的JSON解析器不會遵循[JSON規範](http://www.json.org/),它明確排除了其定義中的字面「控制字符」(如「回車符」和「換行符」)一個有效的字符串。所以如果這是一個錯誤,那就是規範中的一個錯誤,而不是jQuery(或其他任何人)實現它的錯誤。 – aroth
那麼,在JSON規範中,[字符串序列](http://www.json.org/string.gif)似乎接受「\ n」字符(這實際上是兩個字符,我明白了)。在jQuery解析器中添加一個異常是明智的,因此如果有單字符「\ n」,他們會將它與兩個字符「\ n」相關聯並接受傳入的字符串。我想不出任何其他行爲可能有害的情況。 –