Правильно десериализовать массив json для отображения результатов в ng2-smart-table - PullRequest
0 голосов
/ 27 августа 2018

Я использую смарт-таблицу ng2 и пытаюсь отобразить данные

Когда я создаю локальный массив объектов, таких как:

var data = [
  {
    id: 1,
    name: 'Leanne Graham',
    username: 'Bret',
    email: 'Sincere@april.biz',
  },
  {
    id: 2,
    name: 'Ervin Howell',
    username: 'Antonette',
    email: 'Shanna@melissa.tv',
  },
  {
    id: 3,
    name: 'Clementine Bauch',
    username: 'Samantha',
    email: 'Nathan@yesenia.net',
  }
]

это работает, но когда я получаю результат json, как из моего API, он не работает:

data = [
  0:{
    id: 1,
    name: 'Leanne Graham',
    username: 'Bret',
    email: 'Sincere@april.biz',
  },
  1:{
    id: 2,
    name: 'Ervin Howell',
    username: 'Antonette',
    email: 'Shanna@melissa.tv',
  },
  2:{
    id: 3,
    name: 'Clementine Bauch',
    username: 'Samantha',
    email: 'Nathan@yesenia.net',
  }
]

Есть идеи?

1 Ответ

0 голосов
/ 27 августа 2018

Обе структуры, которыми вы поделились в вопросе, совершенно разные. В идеале было бы лучше, если бы у вас была такая же структура ответов, поступающая из вашего API. Я думаю, что первая - это структура, в которой отвечает ваш API. Я не совсем уверен, почему у вас есть структура ниже. В любом случае это недопустимый массив.

Если вы все еще получаете этот ответ, вы можете создать функцию отображения, чтобы эта работа работала. Вот как:

Предполагая, что вот ответ, который вы получаете от своего API:

data = {
  '0': {
    id: 1,
    name: 'Leanne Graham',
    username: 'Bret',
    email: 'Sincere@april.biz',
  },
  '1': {
    id: 2,
    name: 'Ervin Howell',
    username: 'Antonette',
    email: 'Shanna@melissa.tv',
  },
  '2': {
    id: 3,
    name: 'Clementine Bauch',
    username: 'Samantha',
    email: 'Nathan@yesenia.net',
  }
}

Вы можете преобразовать их в данные необходимого формата, например так:

let myData = [];
for(let index in data) {
  myData.push(data[index]);
}

UPDATE Эти данные выглядят знакомо. Вы используете JSONPlaceholder? Потому что, если это так, вы можете взглянуть на этот Пример StackBlitz Project , который я создал. Я также использую JSONPlaceholder API, чтобы получить список пользователей и показать его в угловой таблице материалов. Этот пример должен помочь вам понять, как получить ответ от API.

...