6

我有两种类型的 JSON 结果:

{
 "person":{
  "fname": "Homer",
  "lname": "Simpson"
  }
 }

{
 "person":[
  {
  "fname": "Homer",
  "lname": "Simpson"
  },
  {
  "fname": "Marge",
  "lname": "Simpson"
  }
  ]
 }

我想使用一个jQuery“每个”:

$.each(response.person, function(i, person){...

但是当 JSON 有一个人和多个人时,“i”和“person”是不同的。我看到单人响应没有数组“[]”,但是当我:

$.each([response.person], function(i, person){...

那么多人不工作。我正在寻找一种使事物正常化的方法,以便我可以始终如一地使用“每个”。

4

2 回答 2

6

理想情况下,您最初会得到一个数组,但您始终可以.concat将结果保存到一个空数组。这将允许您持续循环:

$.each([].concat(response.person), function(i, person){...

http://jsfiddle.net/MtzH8/

于 2013-05-14T18:18:44.277 回答
4

测试它是否是一个数组。

$.each(($.isArray(response.person) ? response.person : [response.person]), function(i, person){...

或者您可以在迭代之前修改对象:

if (!$.isArray(response.person)) {
    response.person = [response.person];
}
$.each(response.person, function(i, person){...
于 2013-05-14T18:16:01.833 回答