语法错误:JSON解析错误:意外的标识符“object”(匿名函数)

34

我不明白在解析文件时出了什么问题:

{ "t": -9.30, "p": 728.11, "h": 87.10 }

Javascript 代码:

<script type="text/javascript">
function check() {
    $.get("http://....file.json", function(response, status, xhr) {
        if (status == "success") {
            var json = JSON.parse(response);
            $("#temp").html(json.t + "&deg;");
            $("#pressure").html(json.p + " mm hg");
        }
        if (status == "error") {
            $("#temp").html("error");
        }
    });
}

我收到了错误信息:
SyntaxError: JSON Parse error: Unexpected identifier "object"

console.log(response); ? - Paul Rad
2
you don't need to parse - Anand Jha
谢谢大家,问题已经解决。 - aspire89
你已经有一个对象了,不需要解析它。 - vidur punj
2个回答

74

很可能你的 response 已经是一个 JavaScript 对象,不需要进行解析。

删除代码中的 var json = JSON.parse(response); 这一行,你的代码就能正常工作了。


然后进行检查,确定它是一个对象或使用$.ajax并告诉它应该是什么。 - epascarello

12
根据jQuery文档中关于$.ajax的说明(这也是$.get内部使用的内容):

dataType:...如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4中 JSON将产生JavaScript对象...)

因此,您的响应很可能已经是一个对象。当您执行JSON.parse(response)时,实际上是在进行:
JSON.parse("[object Object]")

因为JSON.parse将其参数强制转换为字符串, 并且普通对象默认会被序列化为[object Object]。初始的[导致JSON.parse期望一个数组,但它在object标记上出现问题,这不符合JSON语法。
删除JSON.parse行,因为response已经被jQuery解析为一个对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接