javascript - Angular-6: Konverter streng til array av et tilpasset objekt


Jeg har denne produserte strengen:

string str = [{"id":1,"name":"Angular"},{"id":2,"name":"SpringBoot"}]

Jeg vil gjerne konvertere det til et array av objekter for å få det slik:

listexps: Expertise[];
listexps = [{"id":1,"name":"Angular"},{"id":2,"name":"SpringBoot"}];

Og Ekspertise klasse er

export class Expertise
{
    id: number;
    name: string;
}

Jeg prøvde det:

let array = str .replace('[{','').replace('}]','').split("},{").map(String);

men det løste ikke problemet mitt, jeg fikk:

"id":1,"name":"Angular","id":2,"name":"SpringBoot"

i stedet for

[{"id":1,"name":"Angular"},{"id":2,"name":"SpringBoot"}];

Har du noen idé om hvordan man løser det? Stor takk.

Svar #1

Det du trenger er JSON.parse; det konverterer en streng til et objekt;

relevant ts:

import { Component } from '@angular/core';
export class Expertise {
  id: number;
  name: string;
}
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  name = 'Angular';
  strIntoObj: Expertise[];

  constructor() {
    let str: string = '[{"id":1,"name":"Angular"},{"id":2,"name":"SpringBoot"}]';
    this.strIntoObj = JSON.parse(str);
    console.log(this.strIntoObj);
  }
}

fullstendig fungerende stackblitz her

Relaterte artikler