我有一个 Ajax 工作流程,我在其中读取长度为 10,000 - 50,000 的 JSON 字符串。现在我用于将 JSON 解析为 javascript 对象的函数抛出异常并且无法执行该语句。
是否对可以解析的json字符串有某种限制,或者可以执行eval?
我试过了
- > YUI JSON实用程序来解析和
- 还尝试了 eval() 和
- 还有 new Function("return"+ jsonString + ";")()。
但是没有运气? 谁能帮我解决这个问题或提出建议。
最佳答案
想法
听起来您的 JSON 格式不正确。没有看到 JSON,很难诊断,但这些是我最常看到的错误:
- 没有单个顶级对象(这里最常见的错误是顶级数组,它是无效的)
- 不正确的引号(所有字符串,包括键,必须使用双引号,而不是单引号)
- 职能
未定义
- 悬挂逗号(我很惊讶 http://json.org 并没有说它们有效,实际上,这是 Crockford 认为需要在 Javascript 中修复的问题之一——而且他并不孤单)
- 不匹配的引号
...尽管上面的 2-4 实际上可以与您尝试评估 JSON 的第二种和第三种方法一起使用,因为 eval
和 new Function
都是接受完整的 Javascropt 对象文字表示法,它具有更多引用选项并允许顶级数组、函数和 undefined
。
“没有单个顶级对象”示例
{"name": "Fred"},
{"name": "Barney"}
像 XML 一样,JSON 需要一个“根”,必须是:
{"entries": [
{"name": "Fred"},
{"name": "Barney"}
]
}
悬挂逗号示例
{
"one": 1,
"two", 2,
}
和
{
"myArray": [1, 2, 3, 4, ]
}
不匹配的引用示例
{"key": "value'}
关于javascript解析JSON字符串在AJAX工作流中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912087/