使用JavaScript获取对象内部数组中对象的值

4
如果我有这个东西:
{
  "data": [{
    "id": "4831",
    "name": "Rui Vasco Martins",
    "nickname": "rvgmartins",
    "money_start": "10200",
    "balance": "8000"
  }]
}

如何获取 data->iddata->name等的值?


一个带有数组、对象的对象... - Chris
好的,抱歉,我正在编辑。那么我应该怎么做呢? - Diogo Almeida
5个回答

4

数据是多元的,这意味着它是一个对象数组。不存在data->id这样的东西,只有data[ n ]->id。在这种情况下,您可能想获取所有可能的ID,并且可以使用传统的for循环或其他方法来实现。

var i =0;
var total = object.data.length;
var ids = [];
for(; i < total; i++) {
   ids.push( data[ i ].id );
}
console.log(ids);

如果你确定只有一个数据输入并且将永远存在,你可以直接使用object.data[ 0 ].id!
请注意,“object”是包含JSON的变量 :)
下次需要时,这里有个提示: http://jsonlint.com/ 希望能对你有所帮助!

4

您的对象包含一个数组,因此需要使用正确的索引进一步深入对象;您的 id 和 name

var obj = {"data":[{"id":"4831","name":"Rui Vasco Martins","nickname":"rvgmartins","money_start":"10200","balance":"8000","profit":"5010","nreload":"1","deal_id":"4813","created_at":"2015-05-27 12:54:33","updated_at":"2015-07-21 22:31:47"}],"status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"services/dashboard","headers":{"Accept":"application/json, text/pla`in, */*"}},"statusText":"OK"}

您可以使用点号或方括号表示法来进一步标识对象属性,下面是点表示法:

var data_id = obj.data[0].id; // "4831"
var data_name = obj.data[0].name; // "Rui Vasco Martins"

这里是方括号表示法:

var data_id = obj.data[0]['id']; // "4831"
var data_name = obj.data[0]['name']; // "Rui Vasco Martins"

1
这个答案针对OP的问题是正确的,但在所有用例中可能不会按预期工作。这取决于数据包含什么。如果它在其数组中包含多个对象怎么办?请参见@Bene的答案。 - Chris
我想这个问题会在后续的提问中得到解决;我只回答被问到的问题。 - Data
JS的linter更喜欢使用点符号表示法,以防万一OP采用了这个答案! - Bene

0

object.data[0].id => 代表id

object.data[0].name => 代表名称


0

As within data there is an array, you can do:

var myJson = {
    "data": [{
        "id": "4831",
            "name": "Rui Vasco Martins",
            "nickname": "rvgmartins",
            "money_start": "10200",
            "balance": "8000",
            "profit": "5010",
            "nreload": "1",
            "deal_id": "4813",
            "created_at": "2015-05-27 12:54:33",
            "updated_at": "2015-07-21 22:31:47"
    }],
        "status": 200,
        "config": {
        "method": "GET",
            "transformRequest": [null],
            "transformResponse": [null],
            "url": "services/dashboard",
            "headers": {
            "Accept": "application/json, text/plain, */*"
        }
    },
        "statusText": "OK"
}
document.write('id: ' + myJson.data[0].id + '</br>name: ' + myJson.data[0].name);


0

首先,让我们了解您的问题。需要注意以下几点:

  • 您有一个JSON,它在一个变量中,我假设这个变量是foo
  • Javascript中没有data->id这样的东西。如果您有一个名为data的对象,并且它有一个成员叫做id,那么您可以将其引用为data.id
  • name在一个数组中。数组的元素通过索引引用,索引从0开始,因此,您的数组被标记为data,它是一个只有一个元素的数组,该元素是第0个元素

因此,您可以使用foo.data[0].id获取id,并且可以使用foo.data[0].name获取name。但是,就本身而言,没有什么强制要求您的数组只有一个元素。如果有更多的元素,您需要能够决定您感兴趣的是哪个元素的idname。此外,您的数组不一定必须具有元素。

无论何时你看到这样的 JSON,数组都被包含在 [] 括号中,对象都被包含在 {} 括号中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接