【问题标题】:How to iterate JSON object with jQuery [duplicate]如何使用 jQuery 迭代 JSON 对象 [重复]
【发布时间】:2016-12-16 12:10:16
【问题描述】:

我想迭代这种 JSON:

{
  "object": {
    "array1": {
      "id": 1
    },
    "array2": {
      "id": 2
    }
  }
}

我尝试过使用这个:

for (var i in dictionary) {
  console.log(dictionary[i].id);
}

但不起作用。

【问题讨论】:

  • 人们不再阅读文档和教程了吗? learn.jquery.com/using-jquery-core/iterating
  • @epascarello 重新开放,因为现在很清楚。
  • @Craig 如果是这样的话,如果你怀疑,我很高兴投票删除这个问题。但是OP有更多的问题,下面已经讨论过了。检查下面的讨论。
  • @Craig 投票删除。现在开心吗?

标签: javascript jquery json


【解决方案1】:

我到处搜索,但找不到我想要的答案。真的吗?没看到$.each 做了什么?

通用迭代器函数,可用于无缝迭代对象和数组。具有长度属性的数组和类数组对象(例如函数的 arguments 对象)通过数字索引进行迭代,从 0 到 length-1。其他对象通过其命名属性进行迭代。

var arr = {
  "object": {
    "array1": {
      "id": 1
    },
    "array2": {
      "id": 2
    }
  }
};
$.each(arr, function (i, v) {
  console.log(i);
  console.log(v);
  $.each(v, function (idx, val) {
    console.log(idx);
    console.log(val);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

AJAX

如果你使用 AJAX 来获取 JSON,你可以很好地使用:$.getJSON:

$.getJSON("https://cdn.rawgit.com/fge/sample-json-schemas/master/avro/avro-schema.json", function (res) {
  $.each(res, function (i, v) {
    console.log(i);
    console.log(v);
    if (typeof v == "object")
    $.each(v, function (idx, val) {
      console.log(idx);
      console.log(val);
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

  • 你的作品,@Craigs 没有。
  • 我会尽可能接受。
  • @decryptable 谢谢。
  • @Craig Nopes,我重新打开了,因为现在很清楚了。
  • @Craig 我也在问题的评论中添加了这一点。
【解决方案2】:
var objectData = {
  "object": {
    "array1": {
      "id": 1
    },
    "array2": {
      "id": 2
    }
  }
};

$.each(objectData, function(key, data){
    // Do stuff here
});

要将其与来自 URL 的 json 一起使用:

$.ajax({
    url: URL,
    dataType: 'jsonp',
    success: function(json) {
       $.each(json, function(key, data){
           console.log(key);
           console.log(data);
        });
    }
});

【讨论】:

  • 我试试这个。
  • 对不起,我刚刚编辑了它
  • @Craig 你为什么不解释一下它的作用?
  • 因为很明显它正在使用键和数据值执行“每个-objectData”?
  • 如果我要从 URL 中提取 JSON,我该怎么做?
【解决方案3】:

试试下面的

var d={
  "object": {
    "array1": {
      "id": 1
    },
    "array2": {
      "id": 2
    }
  }
}

$.each(d,function(i,v){console.log(i,v)})

【讨论】:

  • 另一个 LQ 答案没有任何解释。比前两个答案差。
猜你喜欢
  • 1970-01-01
  • 2021-10-23
  • 2011-06-05
  • 2013-11-03
  • 2021-11-07
  • 2018-11-19
  • 2017-05-21
  • 2019-07-21
  • 1970-01-01
相关资源
最近更新 更多