angular 2 http服务无法从dotnet解析json

时间:2016-07-11 17:02:27

标签: angular

我对angular 2 http服务非常困惑。

我在asp.net上有一个非常简单的模型:

public class Question
{
    public int QuestionId { get; set; }
    public string Value { get; set; }
    public ICollection<Answer> Answers {get; set; }
}

public class Answer
{
    public int AnswerId { get; set; }

    public string Value { get; set; }

    [JsonIgnore]
    ...
}

并且使用此模型的对象进行响应看起来像这样:

[{"questionId":0,"value":"qqq","answers":
[{"answerId":25,"value":"qwerty"}]},
{"questionId":1,"value":"eee","answers":
[{"answerId":26,"value":"qwerty2"}]}]

所以,我已经看过这个json并将这个模型复制到typescript类:

export class Question {
    questionId: number;
    value: string;
    answers: Array<Answer>;
} 

export class Answer {
    answerId: number;
    value: string;
}

然后我写了httpservice:

GetQuestions(): Observable<Question[]> {
    return this.http.get("Api/GetAllQuestions")
        .map(this.extractData)
        .catch(this.handleError);
}

private extractData(res: Response) {
    let body = res.json();  
    return body || {};
}

我试图使用它:

ngOnInit() {
     this.questionService.GetQuestions()
         .subscribe(
         questions => this.questions = questions,
         error => this.errorMessage = <any>error);
}

看起来我的问题数组在执行此方法后以某种方式初始化。问题数组的字符串化看起来像这样:

[{"questionId":0,"value":"qqq","answers":
[{"answerId":25,"value":"qwerty"}]},
{"questionId":1,"value":"eee","answers":
{"answerId":26,"value":"qwerty2"}]}]

但如果我尝试使用它

 <div class="panel panel-default" *ngFor="let q of questions">
    <label>
        id: {{q.questionId}} val: {{value}}
    </label>
    <div *ngFor="let a of q.answers">
        <label>
               id: {{a.answerId}} value: {{a.value}}
        </label>
    </div>
</div>
  • 我什么都看不见!此外,questuin.length是2(预期),但questions[0].questionId没有给我任何东西。我做错了什么?

0 个答案:

没有答案