-1

我正在尝试两种不同的方法。一个只在 Firefox 中工作,另一个在 Safari 中工作,但两者都不能工作。在 Firefox 中工作的是:

 var json = JSON.parse(data);
 var results = json.query.results.quote;

在 Safari 中工作的那个

 var results = data.query.results.quote;

其中 data 是从服务器返回的 JSON。这些是解析 JSON 的正确方法之一,以及浏览器兼容性的最佳方法是什么

编辑:当我在 Safari 中使用调试时JSON.parse出现错误:Unexpected identifier "object"

4

2 回答 2

2

如果您使用 jQuery 获取此 JSON 数据,则无需担心解析它。jQuery 可以(有时会)为你做这件事。

您的问题是(可能)它已经为您解析了。如果您的服务器返回Content-type: application/json标头,jQuery 将为您解析它。如果它返回不同的标头,例如text/html,那么它不会被解析为 JSON。不确定变量包含什么从来都不是一件好事。

要告诉 jQuery 始终将其解析为 JSON,请使用dataType: 'json'. 这可以确保回调中的数据始终是一个对象。

$.ajax({
    url: 'file.php',
    dataType: 'json',
    success: function(data){
        var results = data.query.results.quote;
    }
});
于 2013-05-07T20:20:15.883 回答
1

您可以使用 Douglas Crockford 的 JSON 官方实现。它在这里可用。主要库确保添加 JSON 功能。在现有浏览器中检查 JSON 的本机实现是否可用也很容易。

JSON 库已经这样做了。它检查浏览器是否已经拥有JSON.parseJSON.stringify实施。如果是这样,它不会覆盖任何东西。如果没有,它将为您提供所需的功能。

于 2013-05-07T19:50:08.557 回答