2
respostas

Como trabalhar com json no angular

Boa tarde, tenho o json abaixo que recebo do backend nessa chamada.

return this.http.get<Empresa[]>(this.API)
      .pipe(tap(console.log));

this.empresaService.all()
        .subscribe(
            (empresas : any) => {
                this.empresas.push(empresas);
            },
            error => console.log(error)); 
[ { "_embedded": { "content": [ { "empresa": { "cdEmpresa": 1, "nmEmpresa": "ENGIE Brasil Participações", "nmSigla": "EBP", "nmDenominacaoSocial": "ENGIE BRASIL PARTICIPAÇÕES LTDA.", "flAtivo": true, "nrParticipacaoCapital": "99,99", "tipoEmpresa": "OPERACIONALHOLDING", "tipoNorma": null, "localidades": [ { "cdLocalidade": 1, "dsLocalidade": "SEDE", "dtRegistroNire": null, "flSede": true, "nmBairro": "CENTRO", "nmComplemento": "14º Andar, Conjunto 1401 - Parte", "nmEnderecoRodape": "AVENIDA ALMIRANTE BARROSO - 20031-000 - CENTRO - RIO DE JANEIRO,RJ", "nmLogradouro": "AVENIDA ALMIRANTE BARROSO", "nmMunicipio": "RIO DE JANEIRO", "nmUf": "RJ", "nrCaixaPostal": null, "nrInscEstadual": null, "nrInscMunicipal": null, "nrLogradouro": "52", "nrTelefone": null, "situacaoLocalidade": "ATIVO", "vlCep": "20031000", "modificationTime": null, "modifiedByUser": null, "creationTime": "2018-11-22T14:34:02.843-02:00", "createdByUser": "SCRIPT", "CNPJ": "01370013000115", "nrNIRE": "33206264213" }, { "cdLocalidade": 2, "dsLocalidade": "EBE", "dtRegistroNire": null, "flSede": false, "nmBairro": "AGRONOMICA", "nmComplemento": null, "nmEnderecoRodape": "RUA PASCHOAL APOSTOLO PITSICA - 88025-255 - AGRONOMICA - FLORIANOPOLIS,SC", "nmLogradouro": "RUA PASCHOAL APOSTOLO PITSICA", "nmMunicipio": "FLORIANOPOLIS", "nmUf": "SC", "nrCaixaPostal": null, "nrInscEstadual": "4832217001", "nrInscMunicipal": "253.645.700", "nrLogradouro": "5064", "nrTelefone": "4832217000", "situacaoLocalidade": "ATIVO", "vlCep": "88025255", "modificationTime": null, "modifiedByUser": null, "creationTime": "2018-11-22T14:34:02.843-02:00", "createdByUser": "SCRIPT", "CNPJ": "02474103000119", "nrNIRE": "42300024384" } ], "modificationTime": null, "modifiedByUser": null, "creationTime": "2018-11-22T14:34:02.842-02:00", "createdByUser": "SCRIPT", "empresaControladora": null, "codigoEmpresaEbs": 101 }, "_links": { "empresas": { "href": "http://localhost:8081/api/govc/v1/empresas" }, "self": { "href": "http://localhost:8081/api/govc/v1/empresas/1" }, "Empresa": { "href": "http://localhost:8081/api/govc/v1/empresas/1" } } } ] }, "_links": { "self": [ { "href": "http://localhost:8081/api/govc/v1/empresas?page=0&size=20&sort=nmEmpresa,asc" }, { "href": "http://localhost:8081/api/govc/v1/empresas" } ] }, "page": { "size": 20, "totalElements": 1, "totalPages": 1, "number": 0 } } ]

Mas não consigo tratar ele, não consigo pegar os parâmetros da empresa, alguém poderia me ajudar??

2 respostas

Tente isso:

this.empresaService.all()
        .subscribe(
            (empresas : any) => {
                // this.empresas.push(empresas);
          this.minhaVariavel = JSON.parse(empresas);
          console.log(this.minhaVariavel);
            },
            error => console.log(error)); 

O backend normalmente envia arquivos JSON no formato string. Ao recebê-los precisamos fazer o "parse" desse arquivo para um JSON.

Não esqueça de criar a propriedade this.minhaVariavel (com qualquer nome que você quiser dar).

fonte

O problema não pode estar no retorno do meu controller?

@GetMapping
    public HttpEntity all(PagedResourcesAssembler<Empresa> assembler, @SortDefault("nmEmpresa") Pageable pageable) {

        Page<Empresa> pageResult = empresaService.findAll(pageable);
        PagedResources<EmpresaResource> resource = assembler.toResource(pageResult, EmpresaResource::new);

        resource.add(linkTo(methodOn(EmpresaController.class).all(assembler, pageable)).withSelfRel());
        return ResponseEntity.ok(resource);
    }

Não sei como tratar no angular.