我正在尝试两种不同的方法。一个只适用于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"
答案 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.parse
和JSON.stringify
。如果是,它将不会覆盖任何东西。如果没有,它将为您提供所需的功能。