Converte um JSON para objeto angular

Bom dia a todos.
Estou consumindo um api REST na minha resposta recebo um JSON com vários objetos.
no Service está assim

    getObterDados() {
    let idFuncionario = window.localStorage.getItem('idFuncionario');
    let body = `idFuncionario=${idFuncionario}`;
    const resp = this.http.
    post(`https://cors-anywhere.herokuapp.com/${this.api}/servico/sessao/funcionario/obter-dados- 
    gerais`,
    body, this.options);
    console.log(resp);
    return  resp;
  }

Até aqui tudo bem, o problema está na hora de converter para um objeto TS.
No meu componente TS tenho um método

obterDados() {

    const dados = this.service.getObterDados().toPromise().then(data => {

      console.log(this.usuario);

    });

  }

e esse objeto

objeto dadosGerais = new DadosGeraisModelo();

a class está assim,

    export class DadosGeraisModelo {
  cargo: string;
  centroCusto: string;
  cnpj: string;
  horarios: Horario[];
  nome: string;
  pis: string;
  pontos: Ponto[];
}
export class Horario {
  diaDaSemana: string;
  ehFolga: boolean;
  entrada1?: string;
  entrada2?: string;
  entrada3?: string;
  flexivel: boolean;
  saida1?: string;
  saida2?: string;
  saida23: string;
}
export class Ponto {
  dia: string;
  entrada1?: string;
  entrada2?: string;
  entrada3?: string;
  saida1?: string;
  saida2?: string;
  saida3?: string;
}

O JSON que recebo da API está assim
Resposta JSON:

{
"nome": "Adilson Vasconcelos Alves Junior",
“pis”:”1234567890”,
"cargo": "PROGRAMADOR JR III",
"cnpj": "12004232000105",
"centroCusto": "DESENVOLVIMENTO",
"pontos": [
{
"dia": "01/01/2019",
"entrada1": null,
"saida1": null,
"entrada2": null,
"saida2": null,
"entrada3": null,
"saida3": null
},
{
"dia": "02/01/2019",
"entrada1": "02/01/2019 07:58",
"saida1": "02/01/2019 12:07",
"entrada2": "02/01/2019 13:07",
"saida2": "02/01/2019 18:03",
"entrada3": null,
"saida3": null
},
{
"dia": "03/01/2019",
"entrada1": "03/01/2019 07:57",
"saida1": "03/01/2019 12:21",
"entrada2": "03/01/2019 13:23",
"saida2": "03/01/2019 18:00",
"entrada3": null,
"saida3": null
}
],
"horarios": [
{
"diaDaSemana": "Seg",
"entrada1": "08:00",
"saida1": "12:00",
"entrada2": "13:00",
"saida2": "18:00",
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": false
},
{
"diaDaSemana": "Ter",
"entrada1": "08:00",
"saida1": "12:00",
"entrada2": "13:00",
"saida2": "18:00",
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": false
},
{
"diaDaSemana": "Qua",
"entrada1": "08:00",
"saida1": "12:00",
"entrada2": "13:00",
"saida2": "18:00",
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": false
},
{
"diaDaSemana": "Qui",
"entrada1": "08:00",
"saida1": "12:00",
"entrada2": "13:00",
"saida2": "18:00",
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": false
},
{
"diaDaSemana": "Sex",
"entrada1": "08:00",
"saida1": "12:00",
"entrada2": "13:00",
"saida2": "17:00",
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": false
},
{
"diaDaSemana": "Sáb",
"entrada1": null,
"saida1": null,
"entrada2": null,
"saida2": null,
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": true
},
{
"diaDaSemana": "Dom",
"entrada1": null,
"saida1": null,
"entrada2": null,
"saida2": null,
"entrada3": null,
"saida3": null,
"flexivel": false,
"ehFolga": true
}
]
}

Preciso converter esse JSON para meu objeto DadosGerais.

Em vez declarar DadosGeraisModelo, Horario e Ponto como class, declare eles como interface. Com isso, basta atribuir o json e pronto:

dados: DadosGeraisModelo;
this.service.getObterDados().subscribe(data => {
    dados = data; // supondo que "data" seja o JSON referente à "DadosGeraisModelo"
});

As interfaces no typescript é exatamente para usar com JSON, eles funcionam apenas como uma marcação para facilitar o desenvolvimento (tipagem). Quando o build do projeto é feito, essas interfaces não geram nada de JS.

Quando tento fazer a atribuição de dados = data.
Recebo um erro ( Cannot find name ‘dados’. Did you mean the instance member ‘this.dados’?)

Ah, foi mal. Tem que referenciar dados com o this: this.dados.

Beleza!

Agora o erro mudou.

Type ‘ArrayBuffer’ has no properties in common with type ‘DadosGeraisModelo’.

Uai, essa requisiçao está retornando JSON mesmo?

Na requisição http, o que eh this.options ? E é para fazer uma consulta mesmo? Pois reparei que vc tah fazendo um POST e não um GET.

Eu preciso enviar na requisição uma chave e valor que nesse caso é o id do funcionário,
private options: any = {headers: new HttpHeaders({‘Authorization’: Bearer ${this.token},
‘Content-Type’: ‘application/x-www-form-urlencoded; charset=UTF-8’})};
Ele me retorna um JSON

Estranho pq, geralmente, qdo envolve array buffer, significa que o retorno da requisição é binário. Tem alguma configuração de arraybuffer no seu código?

Verifique também se na parte: dados = data;, o data realmente é o JSON esperado.

Rapaz, se é realmente uma requisição de consulta apenas, onde vc precisa passar somente esse parâmetro, usa GET passando o idFuncionario como queryParam. Fica correto.

Na documentação da API está dessa forma.
URI: /servico/sessao/funcionario/obter-dados-gerais
Método: POST
Formulário - form-urlencoded:
Chave: idFuncionario Valor: id do funcionário
Resposta JSON:

Eu testei pelo Postman e funciona de boa.

O doido é que esse erro não faz sentido.

Verdade.
Tenho outra requisição que faço da mesma forma com o POST e não recebo esse erro.