Как получить доступ к значениям из ответа JSON, который находится в [object Object], [object Object] в Angular 6

#json #angular #angular6

#json #angular #angular6

Вопрос:

У меня есть ответ в формате JSON, ниже приведен мой ответ.

 {
    "data": [
        {
            "2": [
                {
                    "name": "Test1",
                    "Address": "Test2"
                },

            ]
        },
         {
            "5": [
                {
                    "name": "Test3",
                    "Address": "Test4"
                },

            ]
        },


    ]
}
  

Я могу получить доступ к данным till из ответа.Здесь «2» и «5» — это дата.Если в этом ответе json присутствует одна дата, то для этого ответа я должен получить имя и адрес
Но я должен показать список данных.

 <div *ngFor = "let data of result">
<span>{{data.name}}</span>
<span>{{data.Address}}</span>
</div>
  

В ts-файле,

  let result = response.data;
  

Я хочу получить доступ к имени и адресу из этого.Кто-нибудь, пожалуйста, может помочь мне, как это сделать.

Ответ №1:

Вы можете использовать функции Object.key , map и concat для выравнивания ваших данных следующим образом

 let obj = this.result;
this.result = Object.keys(obj).map(function (key) {   
  let objkey = obj[key];
  let first = Object.keys(objkey)[0]
  return obj[key][first];
});

this.result = [].concat.apply([], this.result);
  

Демонстрация на https://stackblitz.com/edit/angular-flat-array-property

Обновлено:

Я обновляю демо с помощью filter, чтобы применить ваш фильтр по дате.

     let obj = this.result;
    var filter = '5';
    this.result = Object.keys(obj).map(function (key) {
      let objkey = obj[key];
      let first = Object.keys(objkey)[0]
      if(filter == first){
         return obj[key][first];
      }else{
        return null;
      }

    });

    this.result = [].concat.apply([], this.result.filter(c=>c != null));
  

Комментарии:

1. Мое требование таково, что если дата равна 2-й, то в списке должны отображаться только данные 2-й даты. Если дата 5-я, то данные 5-й даты должны отображаться в списке. в принципе, мне нужно отфильтровать это на основе даты. Можете ли вы помочь мне, как это сделать. @Hien Nguyen

2. Да, это работает. Это именно то, что я искал. Большое спасибо 🙂 . Действительно, это спасло мой день. @Hien Nguyen