如何从此数据结构中获取值

时间:2017-02-21 17:27:28

标签: javascript json ajax reactjs

ajax请求(存储在名为results的变量中)将此数据作为响应返回:

Object {hits: Object, links: Object}
  hits:Object
    hits:Array(2)
      0:Object
         active:true
         email:"user1@example.com"
         id:1
         links:Object
         __proto__:Object
      1:Object
         active:true
         email:"user2@example.com"
         id:2
         links:Object
         __proto__:Object
      length:2
      __proto__:Array(0)
      total:2
    __proto__:Object
  links:Object
__proto__:Object

它有哪种数据类型?我认为它是json但使用JSON.parse(results)会返回此错误:

 Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)

如何访问其中的Array?我需要获取电子邮件地址和ID。它可能不相关,但我在ReactJS组件中使用它。

2 个答案:

答案 0 :(得分:0)

根据您的回复,它已经是JSON对象了。 因此,如果您想访问 hits 属性,请输入以下代码:results.hits

你还提到了以下内容:

  

它识别出第一个命中,但不识别第二个命中。

您可以尝试console.log(results.hits)并在此处分享输出吗?我猜你的响应对象只有一个 hits 属性,它的类型就是数组。

答案 1 :(得分:0)

观察:由于响应已经是JSON Object,因此无需再次解析。

建议:使用array.map()方法迭代数组并获取所需的元素。

<强>样本

var results = {
  "hits": {
  "hits": [
    {
      active:true,
      email:"user1@example.com",
      id:1
    },
    {
      active:true,
      email:"user2@example.com",
      id:2
    }
  ]
  },
  "links": {}
};

var res = results.hits.hits.map(function(item) {
  return item.email;
});

console.log(res);