我有一个奇怪的IE错误,我在google上唯一能找到的就是,当你在字典或数组中有一个后缀逗号时,这个错误就会出现。但根据JSONLint的说法,我的JSON是非常出色的,所以我感到非常沮丧。JSON在这里列出。我的问题是。有没有人经历过这个错误,而不是","-related?任何帮助或指导都会得到极大的认可。
顺便说一下,错误出现在我尝试过的任何JSON解码器中,但我想使用的是mootools JSON.decode
{
"spine": [
"title.xml",
"about.xml",
"main0.xml",
"main1.xml",
"main2.xml",
"main3.xml",
"main4.xml",
"main5.xml",
"main6.xml",
"main7.xml",
"main8.xml",
"main9.xml",
"main10.xml",
"main11.xml",
"similar.xml",
"feedbooks.xml"
],
"chapters": {
"main9.xml": "TEST",
"similar.xml": "TEST",
"title.xml": "TEST",
"main10.xml": "TEST",
"feedbooks.xml": "TEST",
"about.xml": "TEST",
"main0.xml": "TEST",
"main5.xml": "TEST",
"main4.xml": "TEST",
"main8.xml": "TEST",
"main6.xml": "TEST",
"main11.xml": "TEST",
"main3.xml": "TEST",
"main1.xml": "TEST",
"main7.xml": "TEST",
"main2.xml": "TEST"
},
"manifest": {
"ncx": {
"href": "fb.ncx",
"media-type": "application/x-dtbncx+xml"
},
"titlepage": {
"href": "title.xml",
"media-type": "application/xhtml+xml"
},
"logo-feedbooks": {
"href": "images/logo-feedbooks.png",
"media-type": "image/png"
},
"logo-feedbooks-tiny": {
"href": "images/logo-feedbooks-tiny.png",
"media-type": "image/png"
},
"about-css": {
"href": "css/about.css",
"media-type": "text/css"
},
"feedbooks": {
"href": "feedbooks.xml",
"media-type": "application/xhtml+xml"
},
"main8": {
"href": "main8.xml",
"media-type": "application/xhtml+xml"
},
"main9": {
"href": "main9.xml",
"media-type": "application/xhtml+xml"
},
"main0": {
"href": "main0.xml",
"media-type": "application/xhtml+xml"
},
"main1": {
"href": "main1.xml",
"media-type": "application/xhtml+xml"
},
"main2": {
"href": "main2.xml",
"media-type": "application/xhtml+xml"
},
"main3": {
"href": "main3.xml",
"media-type": "application/xhtml+xml"
},
"main4": {
"href": "main4.xml",
"media-type": "application/xhtml+xml"
},
"main5": {
"href": "main5.xml",
"media-type": "application/xhtml+xml"
},
"main6": {
"href": "main6.xml",
"media-type": "application/xhtml+xml"
},
"main7": {
"href": "main7.xml",
"media-type": "application/xhtml+xml"
},
"main10": {
"href": "main10.xml",
"media-type": "application/xhtml+xml"
},
"main11": {
"href": "main11.xml",
"media-type": "application/xhtml+xml"
},
"newspaper-css": {
"href": "css/newspaper.css",
"media-type": "text/css"
},
"page-css": {
"href": "css/page.css",
"media-type": "text/css"
},
"about": {
"href": "about.xml",
"media-type": "application/xhtml+xml"
},
"main-css": {
"href": "css/main.css",
"media-type": "text/css"
},
"titlepage-css": {
"href": "css/title.css",
"media-type": "text/css"
},
"feedbooks-css": {
"href": "css/feedbooks.css",
"media-type": "text/css"
},
"similar": {
"href": "similar.xml",
"media-type": "application/xhtml+xml"
}
},
"spinereal": [
"title.xml",
"about.xml",
"main0.xml",
"main1.xml",
"main2.xml",
"main3.xml",
"main4.xml",
"main5.xml",
"main6.xml",
"main7.xml",
"main8.xml",
"main9.xml",
"main10.xml",
"main11.xml",
"similar.xml",
"feedbooks.xml"
],
"contents": [
{
"src": "title.xml",
"id": "level1-titlepage",
"title": "Title"
},
{
"src": "about.xml",
"id": "level1-about",
"title": "About"
},
{
"src": "main0.xml",
"id": "chap578",
"title": "Chapter 1"
},
{
"src": "main1.xml",
"id": "chap580",
"title": "Chapter 2"
},
{
"src": "main2.xml",
"id": "chap582",
"title": "Chapter 3"
},
{
"src": "main3.xml",
"id": "chap584",
"title": "Chapter 4"
},
{
"src": "main4.xml",
"id": "chap586",
"title": "Chapter 5"
},
{
"src": "main5.xml",
"id": "chap588",
"title": "Chapter 6"
},
{
"src": "main6.xml",
"id": "chap590",
"title": "Chapter 7"
},
{
"src": "main7.xml",
"id": "chap592",
"title": "Chapter 8"
},
{
"src": "main8.xml",
"id": "chap594",
"title": "Chapter 9"
},
{
"src": "main9.xml",
"id": "chap596",
"title": "Chapter 10"
},
{
"src": "main10.xml",
"id": "chap598",
"title": "Chapter 11"
},
{
"src": "main11.xml",
"id": "chap600",
"title": "Chapter 12"
},
{
"src": "similar.xml",
"id": "level1-similar",
"title": "Recommendations"
}
],
"metadata": {
"publisher": "TEST",
"rights": "TEST",
"description": "TEST",
"language": "TEST",
"creator": "TEST",
"title": "TEST",
"source": "TEST",
"coverage": "",
"date": "TEST",
"identifier": "TEST",
"subject": "TEST"
}
}更新
伙计们..。我已经解决了我的问题。我得到json的方式来自Django,我假设我可以简单地获取我的字典的simplejson.dump,然后在这样的模板中使用它:
var opf = {{ var }}这在webkit和mozilla浏览器中运行得很好,但是IE在这条线上的神秘错误让IE窒息了。所以..。我试过的是
var opf = JSON.decode({{var}});和
var opf = JSON.decode("{{var}}");这产生了完全相同的错误,但是现在这个错误发生在mootools的某个地方。我什么都试过了。/因此,我最终所做的是创建一个Request.JSON,这样我就不会将变量传递给模板。现在,IE突然发挥得很好:/我觉得这是个小问题,但到底是怎么回事。谢谢你的快速回复伙计们。
发布于 2011-03-11 11:00:11
最新答案
我认为这一定是页面其他地方的错误。Dimitar在下面指出,您标记了您的问题mootools,因此可能正在使用JSON.decode,但效果很好:
var obj, json;
json = '...your JSON...';
obj = JSON.decode(json);实例化
交替:如果引用的内容实际上出现在JavaScript代码中(没有包含在字符串中,没有通过XHR或其他方式从服务器加载),那么您引用的是一个JavaScript对象文本,而不是JSON,您根本不解析它。简化示例:
JavaScript对象文本:
var obj = {
foo: "bar"
};属性名称周围的引号在对象文本中是可选的(在JSON中不是这样,在JSON中它们是必需的),所以这也很好:
var obj = {
"foo": "bar"
};杰森:
var json = '{' +
' "foo": "bar"' +
'}';
var obj = JSON.decode(json);原始答案:(错过了mootools标签)
它可以很好地工作在json2.js上,甚至返回到IE6上:
var obj, json;
json = '...your JSON...';
obj = JSON.parse(json); // where `json` is a string containing your JSON实例化
听起来像是如何解析它的问题,或者代码中其他地方的问题。
如果您使用的是原始eval,请确保将JSON包装在括号中:
var obj, json;
json = '...your JSON...';
obj = eval('(' + json + ')');实例化
...but我不建议使用eval来解析JSON (甚至不建议使用json2,它在幕后使用eval ),除非您确定了源(例如,您自己的服务器)。我可能会使用来自Crockford的github页面的一个非Crockford的github页面解析器。
https://stackoverflow.com/questions/5271982
复制相似问题