我继续为以下数据获取JSON解析器错误:
[{"data":"Aerospace and Defense"},{"data":"Agriculture"},{"data":"Business Services"},{"data":"Chemicals"},{"data":"Construction"},{"data":"Consumer Goods and Services"},{"data":"Education"},{"data":"Electronics"},{"data":"Energy and Utilities"},{"data":"Environmental Services and Equipment"},{"data":"Financial Services"},{"data":"Food and Beverage"},{"data":"Healthcare Goods and Services"},{"data":"Industrial Goods and Services"},{"data":"Information Technology"},{"data":"Metals and Mining"},{"data":"Security Products and Services"},{"data":"Software"},{"data":"Telecom"},{"data":"Tranportation and Storage"}]
任何人都可以确定错误是什么吗?我最初使用的是“航空航天与国防”,并认为特殊角色可能是问题所在。但它看起来不像。
我使用ASP.NET MVC JSONResult将其传递回jQuery。 FireFox和IE显示正确创建的数据,但jquery解析器抛出错误。我听说解析器在新的jQuery中已经被显着修改了。
任何帮助都将受到高度赞赏。
答案 0 :(得分:3)
对我来说还不错。请参阅DEMO。
在对实际jQuery AJAX请求的响应中使用此JSON字符串的另一个演示:
我无法真正看到如何对jQuery JSON解析器进行重大修改。 这是jQuery 1.5.1中的actual source of jQuery.parseJSON:
parseJSON: function( data ) {
if ( typeof data !== "string" || !data ) {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( rvalidchars.test(data.replace(rvalidescape, "@")
.replace(rvalidtokens, "]")
.replace(rvalidbraces, "")) ) {
// Try to use the native JSON parser first
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
} else {
jQuery.error( "Invalid JSON: " + data );
}
},
只有一个地方可能会导致一些问题,那就是the JSON regexp:
// JSON RegExp
rvalidchars = /^[\],:{}\s]*$/,
rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
但是John Resig在2010年9月是last modified。
您使用的是什么版本?
答案 1 :(得分:2)
http://www.jsonlint.com/说这是有效的。
可能是一个jquery bug?
答案 2 :(得分:1)
您使用的是哪个版本的jQuery?我在VS 2010中使用默认的ASP.NET MVC模板时遇到了完全相同的问题,其中包括jQuery 1.5.1的本地副本。
即使我返回的JSON看起来很好并且经过验证,我仍然从jQuery $ ajax函数中获取'parserrror'。最终,在绝望中,我改为jQuery 1.6,它运行良好。所以我怀疑1.5.1中有一个错误。
答案 3 :(得分:0)
也许你需要在json的开头和结尾都有单引号,因为你要解析它所以它应该是字符串
答案 4 :(得分:0)
感谢您的惊人回复。这是我在进一步研究后发现的。 我正在使用jquery1.5,结果发现有一些非常有趣的事情发生了。我在jsTree上有一个单独的帖子,因为我最初认为是JSTree给了我一个错误,但事实证明这绝对不是jsTree但可能与jQuery相关。
由于该项目截止日期的性质,我无法研究整个问题,但我确实找到了解决方法。希望这会有所帮助:
答案 5 :(得分:0)
将对象封装在波浪形括号中为我解决了这个问题。没有[]而没有“”。
答案 6 :(得分:0)
我收到此错误的一个原因是因为我在我的数据库中保存\ n(即“这是我的笔记。\ n它告诉你一些东西”)...我从textarea输入中得到了这个。当我尝试使用该转义字符发回json字符串时,它抛出了这个错误。