0

我有一个从休息 api 返回的 json 响应,如下所示

{
  "data": [{ "id": "86", "name": "Hello", "last_name": "world" }],
  "extra": { "message": "Hello", "additionalmessage": "world" }
};

我使用 jsonparse 将其转换为 javascript 中的对象,如下所示

var obj = JSON.parse(e.data)

当我访问obj.extra.message 时,它​​会打印“Hello”。

但是当我尝试访问 obj.data[0] 时,我得到 [object][Object] ,似乎它以“数据”作为关键字?

我该如何克服呢?

4

4 回答 4

1

请注意,您的对象位于数组中。Javascript 不显示整个对象;您必须使用对象的键来访问其数据。

Obj.data[0]是整个对象。

于 2020-06-20T18:09:34.737 回答
0

看来您的响应已经是 JSON。所以不要再解析它:

const data = {
   "data":[
      {
         "id":"86",
         "name":"Hello",
         "last_name":"world"
      }
   ],
   "extra":{
      "message":"Hello",
      "additionalmessage":"world"
   }
}

console.log(data["data"][0].name);
于 2020-06-20T17:51:23.870 回答
0

解析工作得很好;只是当你输出第一个元素时,你只是在输出对象,而不是它的一个属性。对象上的默认 toString 输出 [object Object]

你可以试试这个:

var user = obj['data'][0];         
console.log(user.name);   
console.log(user.last_name);   

或者试试

JSON.stingify(obj.data[0]) 
于 2020-06-20T17:55:44.920 回答
0

你可以这样做:

var obj = {
  "data": [{ "id": "86", "name": "Hello", "last_name": "world" }],
  "extra": { "message": "Hello", "additionalmessage": "world" }
};

console.log(obj["data"][0]["id"]);

于 2020-06-20T18:09:17.163 回答