преобразовать данные JSON в объект в component.ts - PullRequest
0 голосов
/ 10 октября 2018

У меня есть данные json, и я хочу преобразовать их в объектный формат для выполнения операции создания.

json

[
{
    "user": {
        "id": 83,
        "username": "das",
        "first_name": "dsafha",
        "last_name": "dfksdfk",
        "email": "sasda@gmail.com",
        "is_active": true,
        "is_superuser": false
    },
    "role": "testBu"
},
{
    "user": {
        "id": 84,
        "username": "sadfds",
        "first_name": "dshhgds",
        "last_name": "fsdjsl",
        "email": "fdjgd@gmail.com",
        "is_active": true,
        "is_superuser": false
    },
    "role": "testeditrole"
},
{
    "user": {
        "id": 86,
        "username": "fs",
        "first_name": "efhks",
        "last_name": "sofdh",
        "email": "fdshk@gmail.com",
        "is_active": true,
        "is_superuser": false
    },
    "role": "testeditrole"
},
{
    "user": {
        "id": 87,
        "username": "xz",
        "first_name": "vj",
        "last_name": "vkfd",
        "email": "sdsl@gmail.com",
        "is_active": true,
        "is_superuser": false
    },
    "role": "testeditrole"
}
]

Я попытался сделать это следующим образом

componentet.ts

let user:any = {};
   user["username"] = this.user.user.email
   user["first_name"] = this.user.user.first_name
   user["last_name"]= this.user.user.last_name
   user["email"]= this.user.user.email

   this.userData["user"] = user
   this.userData["role"] = this.user.role

и, утешая после ввода данных в поля ввода, я 'Я не получаю данные роли.Я получаю другие данные.Данные роли отображаются пустыми.Я думаю, это из-за того, как я написал код в componentet.ts, который вызывает проблему.

Ответы [ 4 ]

0 голосов
/ 10 октября 2018

Я думаю, что лучше всего создать объект, соответствующий структуре JSON, и назначить только массив данных JSON для массива объекта.

class User{
   id:string;
   username:string;
   firstName:string;
   lastName:string;
   email:string;
   isActive:boolean;
   isSuperviser:boolean;
}
class JSONData{
   user:User;
   role:string
}
 data:JSONData[] = yourJson.data;

Вы корректируете имя свойства в данных json, как в вашем классе, и вы можете обрабатывать данные правильно и легко, см. Эту ссылку для получения дополнительной информации

0 голосов
/ 10 октября 2018

Нет необходимости конвертировать.Это уже формат json, но вы должны использовать индекс массива, а затем установить переменную пользователя.

Например:

let user:any = {};
user = this.user[arrayIndex].user;

this.userData["user"] = user
this.userData["role"] = this.user[arrayIndex].role;

если вы хотите получить данные из массива json, вы должны использовать индекс массива.Вот так.

let user:any = {};
user = this.user[0].user;
this.userData["role"] = this.user[0].role;
0 голосов
/ 10 октября 2018

Вы всегда можете создавать модели:

export class User {
  id: string,
  username: string,
  first_name: string,
  last_name: string,
  email: string,
  is_active: boolean,
  is_superuser: boolean
}

export class UserDetails{
  user:User;
  role:string;
}

Затем

// Assume you have received the json in string form in 'resultlist' variable
let dataList = <Array<UserDetails>>JSON.parse(resultlist);

ИЛИ

// Assume you have received the json in object form in 'resultlist' variable
let dataList = <Array<UserDetails>>resultlist;

Счастливое кодирование !!!

0 голосов
/ 10 октября 2018

this.userData["role"] = this.user.role должно быть this.userData["role"] = this.role

...