解析JSON函数
有人可以向我解释这个解析函数的实际工作原理吗?解析JSON函数
function parseFlickrJson(jsonstring){
var data=null;
var jsonFlickrApi=function(d){
data = d;
}
eval(jsonstring);
return data;
}
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)
发生之前定义的原因。
Upvoting只是为了好玩:) – powtac 2011-03-31 22:59:27
so var jsonFlickrApI不仅仅是一个自定义变量,而是一个实际存在的'事物'? (对不起,这听起来有点无知......我主要用于Java) – raoulbia 2011-03-31 23:12:48
'var jsonFlickrApi = function(d)...'实际上是创建一个匿名函数并将其引用存储在'jsonFlickrApi'中所以我想这不是真正的匿名)。 'eval'评估一个字符串,就好像它是源代码一样。由于来自Flickr API的响应包含对“jsonFlickrApi”的调用,因此该函数实际存在非常重要,否则您将得到一个异常。 – 2011-03-31 23:19:13
是吗?它来自哪里? – 2011-03-31 22:58:10