关键词:
【中文标题】打字稿从json创建一个类【英文标题】:Typescript create a class from json 【发布时间】:2016-03-04 13:27:17 【问题描述】:我有一个接口 IPost 和一个类 Post,我想从 json 数据创建 Post,在 Post 构造函数中我得到接口 IPost 匹配的 json 响应.
我的意思是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】:就像使用 JavaScript 一样,您必须使用标准循环遍历每个值,并将该值分配给 self。在您的情况下分配给 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
,因此您不需要中间的self
变量。
【讨论】:
let obj = res.json()
而不是让 json
我的界面中有嵌套属性,比如post.embedded.title.rendered
,这对所有人都有效还是我应该为此创建嵌套的for循环?
如果那些嵌套的属性是其他类的实例,那么你就必须做不同的事了。打字稿从对象中选择ID [重复]
】打字稿从对象中选择ID[重复]【英文标题】:TypescriptSelectIdsfromobject[duplicate]【发布时间】:2017-05-0300:38:12【问题描述】:我是Typescript的新手。我想从observable中选择ids这是我观察到的letmyObj=["id":1,"text":"Mary","id":2,"text":"Nancy","id":3... 查看详情
打字稿从元组/数组值派生联合类型
】打字稿从元组/数组值派生联合类型【英文标题】:Typescriptderiveuniontypefromtuple/arrayvalues【发布时间】:2017-12-2807:58:14【问题描述】:说我有清单constlist=[\'a\',\'b\',\'c\']是否可以从\'a\'|\'b\'|\'c\'这个值联合类型派生?我想要这个是... 查看详情
创建一个返回反应组件类的打字稿函数
】创建一个返回反应组件类的打字稿函数【英文标题】:Createatypescriptfunctionreturningreactcomponentclass【发布时间】:2020-06-0319:17:55【问题描述】:我需要创建一个实用函数,它将根据某些条件返回一个反应组件类(而不是实例)。... 查看详情
在角度/打字稿中将类创建为可迭代
】在角度/打字稿中将类创建为可迭代【英文标题】:creatingclassasIterableinangular/typescript【发布时间】:2019-01-3021:30:18【问题描述】:我已经在Angular中创建了一个类,现在当我通过商店订阅获取对象时,虽然它返回一个对象数组,... 查看详情
打字稿类嵌套json猫
】打字稿类嵌套json猫【英文标题】:Typescriptclassnestedjsoncat【发布时间】:2018-06-2512:52:33【问题描述】:您好,我有嵌套的json尝试转换类,但我弄错了。类:exportclassLocationaddress:Stringcity:Stringcountry:Stringposition:lat:String,lng:String,mark... 查看详情
从类创建派生类型,但省略构造函数(打字稿)
】从类创建派生类型,但省略构造函数(打字稿)【英文标题】:Createaderivedtypefromclass,butomittheconstructor(typescript)【发布时间】:2020-02-2201:08:49【问题描述】:我有一个这样定义的接口和类:interfaceFooconstructor:typeofFoo;classFoostaticba... 查看详情
打字稿:通过传入命名参数的构造函数创建类?
】打字稿:通过传入命名参数的构造函数创建类?【英文标题】:Typescript:Createclassviaconstructorpassinginnamedparameters?【发布时间】:2018-01-1210:18:11【问题描述】:我有一个类,其中定义了带有3个参数的构造函数,这些参数都是可选... 查看详情
如何创建一个从打字稿中的类中提取所有方法的类型?
】如何创建一个从打字稿中的类中提取所有方法的类型?【英文标题】:Howtocreateatypethatextractallmethodsfromaclassintypescript?【发布时间】:2022-01-2209:55:57【问题描述】:假设我有一堂课FooclassFoobar()//anythingbaz()//anything我如何创建一个... 查看详情
找不到名称“JSON”打字稿文件
】找不到名称“JSON”打字稿文件【英文标题】:Cannotfindname\'JSON\'typescriptfile【发布时间】:2020-06-2503:12:45【问题描述】:我创建了一个Angular应用程序,我在其中执行JSON转换功能,例如JSON.stringify、JSON.parse我收到错误,例如找不... 查看详情
在打字稿Angular 5中导入json文件
】在打字稿Angular5中导入json文件【英文标题】:ImportjsonfileintypescriptAngular5【发布时间】:2019-01-0314:31:35【问题描述】:我正在尝试像这样在typescript类中导入json文件import*asnationalitiesfrom\'./mock/nationalities.json\';它给了我一个错误找... 查看详情
打字稿,序列化类对象
】打字稿,序列化类对象【英文标题】:Typescript,serializeclassobjects【发布时间】:2015-05-2616:17:07【问题描述】:如何将这些类序列化为JSON?从下面的示例中可以看出,JSON.stringify()不会序列化Cache_Backend_LocalStorage_TagThree对象内的Cac... 查看详情
打字稿:将 JSON 对象转换为类/接口对象
】打字稿:将JSON对象转换为类/接口对象【英文标题】:Typescript:ConvertJSONobjecttoaclass/interfaceobject【发布时间】:2018-10-1003:47:06【问题描述】:我正在尝试将API响应转换为typescript类/接口。这里API返回一个包含一些属性的对象列表... 查看详情
打字稿:使用具有不同类型的同一类
】打字稿:使用具有不同类型的同一类【英文标题】:Typescript:usethesameclasswithdifferenttypes【发布时间】:2018-11-0309:34:54【问题描述】:在定义类和使用的每个对象的类型时,我真的很喜欢Typescript的严格性,但我最近遇到了一些我... 查看详情
在Angular8中将HTTP响应json转换为打字稿对象
】在Angular8中将HTTP响应json转换为打字稿对象【英文标题】:ConvertingHTTPresponsejsonintotypescriptObjectinAngular8【发布时间】:2019-11-0419:51:47【问题描述】:我正在尝试从angular8中的HTTP响应创建一个打字稿对象,但我收到一个错误:错误... 查看详情
使用打字稿在构造函数中动态设置类属性
】使用打字稿在构造函数中动态设置类属性【英文标题】:Usetypescripttodynamicallysetclasspropertyinconstructor【发布时间】:2021-12-3105:36:31【问题描述】:我正在尝试创建一个打字稿类MyClass,并在构造函数中动态设置实例属性:constmyIns... 查看详情
打字稿可变泛型类,接受扩展公共基础的可变数量的类对象?
】打字稿可变泛型类,接受扩展公共基础的可变数量的类对象?【英文标题】:Typescriptvariadicgenericclass,acceptingavariablenumberofclassobjectswhichextendacommonbase?【发布时间】:2021-09-2611:14:18【问题描述】:我正在尝试在typescript中设计一个... 查看详情
如何使用 Alamofire 和 SwiftyJSON 正确创建一个类来保存来自 JSON 的数据
】如何使用Alamofire和SwiftyJSON正确创建一个类来保存来自JSON的数据【英文标题】:HowtoproperlycreateaclasstoholddatafromJSONwithAlamofireandSwiftyJSON【发布时间】:2016-06-1620:15:44【问题描述】:我正在尝试创建一个类来保存以JSON形式发送的来... 查看详情
打字稿和多个类
】打字稿和多个类【英文标题】:Typescriptandmultipleclasses【发布时间】:2017-08-1903:29:49【问题描述】:我有一个组件类EventSchedulePage。它扩展了HandleStorageServiceabstract类,如下所示。你可以看到这个子类上有一个名为showInvalidTokenAler... 查看详情