【问题标题】:Get object from JSON with jQuery使用 jQuery 从 JSON 中获取对象
【发布时间】:2016-09-02 14:14:32
【问题描述】:

我正在尝试使用 $.getJSON 在我自己的服务器中查询 JSON 文件,然后在对象中循环。到目前为止没问题,然后我有一个 ID,它是我想要返回的对象的名称,但似乎无法正确:

  var id = 301;
  var url = "path/to/file.json";
  $.getJSON( url, function( json ) {
    var items = [];
    items = json;
    for (var i = 0; i < items.length; i++) {
      var item = items[i];
      console.log(item);
    }
  });

这会在控制台中打印以下内容:

现在假设我只想将对象 == 返回到 id,然后我可以像 item.banositem.dorms 等那样引用它。

我的第一种方法类似于

console.log(json.Object.key('301'));

没用

非常感谢任何帮助。

【问题讨论】:

标签: javascript jquery json getjson


【解决方案1】:

您的响应似乎包含在一个包含一个元素的数组中。


您可以通过方括号动态访问对象属性:

var id = 301;
var url = "path/to/file.json";
$.getJSON(url, function(json) {
    console.log(json[0][id].banos);
});

【讨论】:

  • 做到了,请解释一下为什么我必须使用两次方括号?
  • [0] 访问包装数组中的第一个(并且仅在这种情况下)元素。 [id] 访问第一步从数组中提取的对象的属性id
  • 我应该解开数组吗?
  • @TimoSta 问题 json 是不同的对象。你的代码示例是正确的。
  • @user2770956 这就是[0] 所做的。如果您从服务器端的响应中删除该数组,则不必在 JavaScript 中执行此操作——如果您的意思是这样的话。
【解决方案2】:

当您拥有要检索的对象中的属性名称时,您可以使用括号表示法。因此,您还可以简化代码:

var id = 301;

//$.getJSON("path/to/file.json", function(json) {
  // response data from AJAX request:
  var json = {
    '301': {
      banos: 2
    },
    '302': {
      banos: 3
    },
    '303': {
      banos: 4
    },
    '304': {
      banos: 5
    },
  };

  var item = json[id];
  console.log(item);
//});

【讨论】:

  • 感谢您的帮助,但返回未定义。我也没有投反对票。
  • 我添加了一个工作示例。如果此代码不起作用,那么您需要将您的实际 JSON 添加到问题中,而不是它的控制台表示的图像。
  • @KingRider 抱歉,我不知道你在说什么
  • @KingRider 有点难以理解,兄弟
  • @KingRider 我不确定你是不是认真的。
【解决方案3】:
$.each(items,function(n,value){
    if(n==301)
        alert(value);
});

【讨论】:

  • 请在您的回答中提供更多详细信息,因为该帖子已在低质量帖子中找到。不鼓励仅使用代码和“试试这个”的答案,因为它不提供任何可搜索的内容以及人们应该“试试这个”的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
相关资源
最近更新 更多