Я пытаюсь получить конкретное значение из объекта json, который возвращается из запроса. Но синтаксис, который я использую, не работает. Возвращаемое значение - undefined. Как я могу получить значение ключа name в объекте json?
Ответ сохраняется в переменной клиента.
$http.get('url').
then(function successCallback(response){
var costumers = response;
console.info(costumers['data']['costumers']['name']);
}, function errorCallback(response){
});
Объект Json
{data: "{"costumers":[{"id":"1","name":"John"},{"id":"2","name":"Mary"}]}"}
Приведенный выше комментарий верен, или вы можете отказаться от всех ненужных кавычек и просто использовать costumers.data.costumers[0].name. (Боевой призыв прокомментировать "объект json")
Итак, ваш пример данных синтаксически неверен ... вы можете привести реальный пример? И это в строковой форме, или вы уже разобрали ее?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


costumers в вашем случае представляет собой массив объектов, поэтому вы должны указать индекс объекта, на который вы хотите настроить таргетинг для получения значений, например:
costumers['data']['costumers'][0]['name']
______________________________^^^
Индекс 0 вернет первый объект:
{"id":"1","name":"John"}
Вы всегда можете перебрать все объекты costumers, и вы можете проверить, имеет ли возвращаемый объект нужный вам «атрибут»:
if ( costumers['data']['costumers'][0].hasOwnProperty('name') ){
console.info( costumers['data']['costumers'][0]['name'] );
}
customers - это массив, для доступа к элементам массива вам нужно записать индекс в квадратных скобках позади него. В этом случае, если вы хотите получить доступ к первому элементу (индекс 0) массива, вы можете сделать это следующим образом:
$http.get('url').
then(function successCallback(response){
var costumers = response;
console.info(costumers['data']['costumers'][0]['name']);
}, function errorCallback(response){
});
Или зарегистрируйте всех клиентов с помощью цикла for:
$http.get('url').
then(function successCallback(response){
var costumers = response;
for(let customer of costumers['data']['costumers']) {
console.info(customer['name']);
}
}, function errorCallback(response){
});
Все это работает, только если объект синтаксически правильный, он должен выглядеть так:
{data: {costumers:[{id:"1",name:"John"},{id:"2",name:"Mary"}]}}
Вместо размещенного вами объекта.
costumers['data']['costumers'][0]['name']