Typescript从json创建一个类

时间:2015-11-30 19:39:57

标签: json class interface typescript

我有一个接口 IPost 和一个类发布,我想从json数据创建Post,在Post构造函数中我得到json响应,其中接口IPost匹配它

我的意思是IPost界面是由这个伟大的工具json2ts

生成的

json2ts:从JSON生成TypeScript接口

import { IPost, Title, Guid, Content, Excerpt, Embedded, Links } from './Ipost.ts';

export class Post implements IPost {
    Id: number;
    Date: string;
    DateGmt: string;
    Guid: Guid;
    Modified: string;
    ModifiedGmt: string;
    Slug: string;
    Type: string;
    Link: string;
    Title: Title;
    Content: Content;
    Excerpt: Excerpt;
    Author: number;
    FeaturedImage: number;
    CommentStatus: string;
    PingStatus: string;
    Sticky: boolean;
    Format: string;
    Links: Links;
    Embedded: Embedded;

    constructor(json: any) {
        var self = this;
        json.subscribe(res => {
            var jsonRes: any = res.json();
            self = jsonRes;        //something like this
        });
    }
}

我可以直接将类Post分配给json,因为json的描述与Post类相同!

除了从json为其对等体分配每个属性之外还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

正如您将JavaScript一样,您将不得不迭代每个值,并使用标准循环将该值分配给self。在您的情况下分配给自己,只需将self的值更改为json值,它本身不会做任何更改this

json.subscribe(res => {
    let json = res.json();
    for (var prop in obj) {
        if( obj.hasOwnProperty( prop ) ) {
            this[prop] = obj[prop];
        }
    }
});

注意:=>this绑定到外部上下文(例如您正在使用的类)到this,这样您就不需要中间{{1}变量。