javascript解析AJAX工作流中的JSON字符串抛出异常

时间:2010-05-26 10:31:55

标签: javascript

我有一个Ajax工作流,我在其中读取长度为10,000 - 50,000的JSON字符串。现在我正在使用的函数将JSON解析为javascript对象抛出异常并且无法执行语句。

对于可以解析的json字符串是否存在某种限制,或者eval可以执行?

我试过了

  1. YUI JSON实用程序解析和
  2. 还尝试了eval()和
  3. new Function(“return”+ jsonString +“;”)()也。
  4. 但没有运气? 任何人都可以帮助我解决这个问题或建议一些事情。

1 个答案:

答案 0 :(得分:2)

思想

听起来你的JSON格式不正确。没有看到JSON,很难诊断,但这些是我经常看到的错误:

  1. 没有单个顶级对象(此处最常见的错误是顶级数组,无效)
  2. 不正确的引号(所有字符串,包括键,必须使用双引号,而不是单引号)
  3. 功能
  4. undefined
  5. 悬空逗号(我很惊讶http://json.org并没有说它们是有效的,实际上,这是Crockford认为需要在Javascript中修复的东西之一 - 而且他并不孤单)
  6. 不匹配的引号
  7. ...虽然上面的2-4节实际上可以使用您尝试评估JSON的第二种和第三种方式,因为evalnew Function都接受完整的Javascropt对象文字表示法,它有更多的引用选项,允许顶级数组,函数和undefined

    “没有单个顶级对象”示例

    {"name": "Fred"},
    {"name": "Barney"}
    

    与XML一样,JSON需要“root”,必须是:

    {"entries": [
            {"name": "Fred"},
            {"name": "Barney"}
        ]
    }
    

    悬空逗号示例

    {
        "one": 1,
        "two", 2,
    }
    

    {
        "myArray": [1, 2, 3, 4, ]
    }
    

    不匹配的引用示例

    {"key": "value'}