2017-02-21 10 views
1

Ajax запроса (хранится в переменной с именем results) возвращает эти данные в ответ:Как получить значения из этой структуры данных

Object {hits: Object, links: Object} 
    hits:Object 
    hits:Array(2) 
     0:Object 
     active:true 
     email:"[email protected]" 
     id:1 
     links:Object 
     __proto__:Object 
     1:Object 
     active:true 
     email:"[email protected]" 
     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>) 

Как я могу получить доступ к массиву внутри него? Мне нужно получить адреса электронной почты и идентификаторы. Это, вероятно, не актуально, но я использую его в компоненте ReactJS.

+0

Это уже объект, так что вам не нужно, чтобы разобрать его. Используйте JSON.stringify, если вы хотите получить строковое представление объекта. – user2085143

+2

Узнайте, что такое JSON (и нет) на json.org –

+0

Как вы получаете доступ к чему-либо в объекте? 'objectReference.property' ... –

ответ

0

Согласно вашему отзыву, это уже объект JSON. Для того, чтобы получить доступ к хитам, введите код: results.hits.

Также вы упомянули следующее:

It recognizes the first hits, but not the second one.

Можете ли вы попытаться console.log(results.hits) и разделить вывод здесь? Я думаю, ваш объект ответа имеет только один показов и его тип - массив.

0

Наблюдение: В качестве ответа уже есть JSON Object, поэтому нет необходимости в его повторном анализе.

Предложение: Используйте метод array.map() для итерации массива и выбор необходимых элементов.

DEMO

var results = { 
 
    "hits": { 
 
    "hits": [ 
 
    { 
 
     active:true, 
 
     email:"[email protected]", 
 
     id:1 
 
    }, 
 
    { 
 
     active:true, 
 
     email:"[email protected]", 
 
     id:2 
 
    } 
 
    ] 
 
    }, 
 
    "links": {} 
 
}; 
 

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

 
console.log(res);