有人可以向我解释这个解析函数究竟是如何工作的吗?
function parseFlickrJson(jsonstring){
var data=null;
var jsonFlickrApi=function(d){
data = d;
}
eval(jsonstring);
return data;
}
答案 0 :(得分:7)
JSON实际上是有效的JavaScript。所以你需要“解码”它,就是把它评估为JavaScript(因此eval
)。它还使用了一种称为JSONP http://en.wikipedia.org/wiki/JSONP的东西,其中不仅仅返回了JSON。
JSONP基本上是JSON包装在一个函数调用中。 JSONP响应的内容可能是:
parseResponse({"Name": "Cheeso", Id : 1823, "Rank": 7})
这意味着当您评估JSONP时,它将尝试调用一个函数(在此示例中为parseResponse
,在您的情况下为jsonFlickrApi
)。这就是必须在jsonFlickrApi
发生之前定义eval(jsonstring)
函数的原因。