在我的服务中,我必须将我的JSON api提供的信息传递给我的模型。这样做的最佳方式是什么?
目前我正在这样做:
import { Attachment } from '.';
export class Contact {
id: number;
attachments: Attachment[] = [];
static fromJSON(data) {
let contact = new Contact();
contact.id = data.id;
// Attachments?
for(let attachment of data.attachments) {
contact.attachments.push( Attachment.fromJSON(attachment) );
}
return contact;
}
}
}
有更好的想法吗?
答案 0 :(得分:1)
如果我理解得很好,您希望获取服务返回的JSON字符串中的信息。
我们说你有以下内容来获取JSON。
that.db.getTodoListFromServer(this)
.done(msg => {
if (msg != undefined) {
//in msg you have your JSON object
})
.fail(msg => {
});
在这一点上你可以做两件事
2.-创建一个具有返回的JSON对象结构的接口(typescript支持接口)。在下面的示例中,我们创建了一个接口IToDoModel。因为我们知道返回的JSON与我们的接口具有相同的结构,所以当我们将JSONreturn分配给接口时不会发生错误。
export interface ToDoModel {
Id: number;
ToDo: string;
}
...
that.db.getTodoListFromServer(this)
.done(msg => {
if (msg != undefined) {
//this json return a list of IToDoModel
var todo: Array<ToDoModel> = msg;
})
.fail(msg => {
//Manage Error
});
我希望这可以帮到你
答案 1 :(得分:0)
最简单的方法是直接向Array<Attachment>
投射附件。
import { Attachment } from '.';
export class Contact {
id: number;
attachments: Attachment[] = [];
static fromJSON(data) {
let contact = new Contact();
contact.id = data.id;
// cast attachments json to `Array<Attachment>`.
contact.attachments = <Array<Attachment>>data.attachments;
return contact;
}
}
}