在javascript中解析多个浏览器的JSON

时间:2013-05-07 19:48:19

标签: javascript json

我正在尝试两种不同的方法。一个只适用于Firefox,另一个适用于Safari,但两者都不兼容。在Firefox中运行的是:

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

在Safari中使用的那个

 var results = data.query.results.quote;

数据是从服务器返回的JSON。这些是解析JSON的正确方法之一,以及浏览器兼容性的最佳方式

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

2 个答案:

答案 0 :(得分: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;
    }
});

答案 1 :(得分:1)

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

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