访问对象内对象内的对象属性

时间:2015-10-03 13:49:07

标签: javascript jquery json ajax

我有一些JSON,我已经专门为这个问题设置了一个变量。

这是我的json:

{"json":{"-K-dxZZVLv4N11BQ-tEJ":{"AssetID":1},"-K-dxwm5y1hVS68GyMhN":{"AssetID":2}}}

以下是我的尝试:

var url = "https://rbxjson.firebaseio.com/catalog.json";
var recent;
$.getJSON(url, function (json) {
recent = Object.keys(json["json"])[0]["AssetID"];
alert(recent);
});

我试图访问" AssetID"的值in" {" AssetID":1}"但是我尝试了上面的代码而且它没有用。

2 个答案:

答案 0 :(得分:0)

这是一个非常奇怪的结构,因为看起来很像变量。但是,您可以通过以下方式访问它们(您与Object.keys非常接近):



var json = {"json":{"-K-dxZZVLv4N11BQ-tEJ":{"AssetID":1},"-K-dxwm5y1hVS68GyMhN":{"AssetID":2}}};
Object.keys(json.json).forEach(function(name) {
  snippet.log(name + ": " + json.json[name].AssetID);
});

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

我在那里显示了一个循环,因为你正在处理一个对象,而不是一个数组。传统上,JavaScript对象没有对其属性的命令(虽然在ECMAScript 2015中有所改变),即使ECMAScript 2015改变了这一点,我也不会想到 JSON (你的格式)在电线上使用)有任何物业订单。

答案 1 :(得分:0)

Object.keys()返回字符串键列表。 那些,实际上并不是对象的一部分,而只是名称。

其次,请注意您在对象中有一个对象。要访问子对象,请将json复制到json.json

要访问该密钥中的内容,请使用json[key],这样:

var url = "https://rbxjson.firebaseio.com/catalog.json";
var recent;
$.getJSON(url, function (json) {
    var key = Object.keys(json.json)[0]
    recent = json.json[key]["AssetID"];
    alert(recent);
});

要查找最后一项资产,请继续使用:

// ...
$.getJSON(url, function (json) {
    var keys = Object.keys(json.json);
    var key = keys[keys.length - 1];
    //...
});

旁注,您可能希望将json重命名为resresult,从而使结构更加直观:result.json,如下所示:

$.getJSON(url, function (res) {
    var key = Object.keys(res.json)[0]
    recent = res.json[key]["AssetID"];
    alert(recent);
});