2013-05-07 71 views
0

做了一个这样的搜索,但没有出现。

我目前正在浏览JSON.net库的例子,并从它们制作真实世界的场景。有一件事我正在努力,当我有未知数量的结果时,通过JSON响应循环。

我知道如果我有一个结果 例如,我可以通过将解析的JSON对象包装在方括号中来创建单项数组。

$.each([res], function (key, value) { 
    //code here 
}); 

而且如果我有多个对象,不要包装对象。

如何使这个每个调用足够灵活来处理这两种情况?

由于提前, 布雷特

+0

你应该知道返回的JSON结果的类型。如果它返回一个数组,那么无论它是否为空,包含一个元素还是更多,都可以遍历它。 – 2013-05-07 15:28:38

+0

只需编写一个接受对象并返回一个数组的小帮助函数,如果它已经是任何数组,就返回它,否则将它推入一个新数组中。 – asawyer 2013-05-07 15:30:13

+1

你不应该改变函数中的接收类型。这是一个糟糕的设计。尽量避免它不惜一切代价。 (如果你有一个数组数组,下面的答案都不会起作用)。即使Javascript是一种动态类型的语言,但并不意味着你应该做这种事情。尝试找到它返回类型并在那里修复它的地方。之后,你可以假设'res'总是一个数组。 – mathk 2013-05-07 16:04:20

回答

0

如果你真的想这样做,这样,你可以输入检查你的“水库”的变量,如果它不仅是包裹。这不是很性感代码,请务必评论它的传统,如果不是在一个IsArray的()函数或东西把它包:)

$.each((Object.prototype.toString.call(res) === '[object Array]') ? res : [res], function (key, value) { 
    //code here 
}); 

编辑:作为@Klaasman指出的那样,你可以使用jQuery的IsArray的()功能。所以它变成

$.each($.isArray(res) ? res : [res], function (key, value) { 
    //code here 
}); 
+1

如果你打算采用这种方法,那么可以使用[jQuery.isArray](http://api.jquery.com/jQuery.isArray/)方法来检查结果 – klaasman 2013-05-07 15:45:17

+0

。我不喜欢假设人们通常使用jQuery,但在这种情况下,它从代码中很明显。不重视。将相应地编辑 – 2013-05-07 15:52:53