Angular 2+ десериализация с помощью json2typescript - PullRequest
0 голосов
/ 18 июня 2020

Я использую Json2Typescript для сериализации и сериализации объекта машинописного текста. Проблема в том, что я не могу десериализовать JSON Данные, которые я получаю от своего внутреннего сервера.

Это мой класс машинописного текста:

@JsonObject('Respondent')
export class Respondent {
    @JsonProperty('id',Number)
    Id:number;

    video:string;

    @JsonProperty('synchro_id',Number)
    SynchroId:string;

    @JsonProperty('language',String)
    Language:string;

    @JsonProperty('project_id',Number)
    ProjectId:number;

    @JsonProperty('terminal_id',Number)
    TerminalId:number;

    @JsonProperty('questionnaire_id',Number)
    QuestionnaireId: number;

    @JsonProperty('device_type_id',Number)
    DeviceTypeId:string;
    // TODO: This is to be removed
    medias: Media[] = null;
  // TODO: This is to be removed
    clicks: Click[] = null;

    @JsonProperty('email_status',String)
    emailStatus:string;

    @JsonProperty('inserted_local_time',String)
    insertedTime:string;

    @JsonProperty('responses',[Answer])
    Answers:Answer[];// TSMap<number,Answer>;  // {[key: number]: Answer[]} = {};

    @JsonProperty('size_on_disk',Number)
    sizeOnDisk:number;

    @JsonProperty('email_opened',Boolean)
    emailOpened:boolean;

    @JsonProperty('token',String)
    token:string;

    constructor() {

    }
...
}

Вот как я десериализую мой JSON.

private getRespondents(start:number,end:number) {

        this._projectService.getRespondentsByRange(start,end,-1,-1,-1,this.questionnaire.id,-1,false).subscribe((respondents) => {
                this.respondents = new Array<Respondent>();

                this.respondents = new JsonConvert().deserializeArray(respondents,Respondent);  // doe s not work

                if(this.respondents!=null && this.respondents.length>0) {
                  this._sizeOnDisk = this.respondents[0].sizeOnDisk * this._nbOfRespondents;
                }
            },
            error => this._errorMessage = <any>error);
    }

1 Ответ

0 голосов
/ 18 июня 2020

Хорошо, я нашел ответ.

Это явно не указано в официальном do c.

ВЫ ДОЛЖНЫ ИНИЦИАЛИЗИРОВАТЬ АТРИБУТЫ КЛАССА.

@JsonProperty("email", String)
public email: String = "";

Проверьте эту ссылку, чтобы получить ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...