我正在进行Angular 9项目,我收到的一个响应包含< code>Date类型的属性,但是当我发送请求时:
// MyModel
class MyModel {
prop: string;
myDate: Date;
}
// request sent like
this.http.get<MyModel>(url);
响应正确,但属性被填充为字符串
ISO格式(例如:2020-11-24T19:48:20.3637502
)(因为在JSON中没有
MyModel的实例或将值赋给
myDate
property时,始终是
。
除了在收到响应后进行映射
之外,还有其他方法可以做到这一点吗?
我试了一下,但没有成功:
class MyModel {
prop: string;
private _myDate: Date;
public get myDate() {
return this._myDate;
};
public set myDate(val) {
this._myDate = new Date(val);
};
}
最简单的方法是映射返回的数据并手动进行修改。
this.httpClient.get<DataModel>("/api/getData")
.pipe(
map((data)=>{
data.date1 = new Date(data.date1);
data.date2 = new Date(data.date2);
data.date3 = new Date(data.date3);
return data;
})
);
请注意,我有点作弊——Date构造函数可以将字符串和Date都作为参数。通常,映射步骤的结果可以具有与接收到的响应不同的类型。
或者,您可以使用Http拦截器。
请参阅 Angular 应用程序中的日期处理(第 2 部分 - Angular http 客户端和 ngx 日期选择器)
此外,正如您所注意到的,您为 http get 指定的类型不会以任何方式强制执行。您会收到 json 反序列化的结果。
请注意,如果您使用< code >类,而不是< code >类型作为您的数据模型,这就特别棘手。即使您收到的字段是您所期望的,原型链也没有建立,所以对收到的对象的任何方法调用都会导致运行时错误。
这也解释了为什么您尝试使用get
和set
失败-您在不是MyModel
类实例中收到的对象。
我的建议是
类型
(或interface
)我不知道这里有什么问题。我想发出一个响应二进制数据(例如文件下载)而不是JSON的HTTP请求。 这些行是可以的-但需要JSON。 但我需要将响应定义为不是 JSON。 在这里,我遇到了一个问题。我也尝试了“斑点”。我总是在编译时收到一个类型脚本错误。 类型'{resseType:"string";}'的参数不能分配给类型'{Headers?: HttpHeaders|{[head: string
我正在发送一个请求到一个服务器,它给了我一个200,没有身体(完全可以接受),但是我无法解决如何配置micronaut注释来处理这个问题。无论我尝试什么,它都试图将空响应解码为JSON(至少我认为这是它正在做的,因为它给出了一个意想不到的错误,而不是当身体出错时得到的正常杰克逊错误)。我在微型文档中找不到任何关于如何做到这一点的东西。
当我调用服务时,它会给出以下错误:- 我已经基于相同的设计模式构建了REST API,它对我来说工作得很好。我没有得到的东西,为什么它说“没有财产日期找到类型现金流!”?实体中没有日期属性。我尝试删除数据库并重新启动,但没有成功。我错过了什么?
问题内容: 在模型类中使用JavaFX bean属性是否正确? 我想知道在模型类中使用属性是否能够将它们与视图组件轻松绑定是否是一种好习惯。我不担心将来这些库的可用性,因为我的程序将在JRE8或更高版本上运行,但是在模型类中使用JavaFX库的性质使我持怀疑态度,并且我担心当前和将来的不兼容性,尤其是因为我想使用Hibernate来保留这些属性。 注意:我使用纯JavaFX环境,并且我的应用程
问题内容: 如何在Python中将类成员变量限制为特定类型? 较长版本: 我有一个具有多个成员变量的类,这些成员变量在该类的外部设置。由于它们的使用方式,它们必须为特定类型,即int或list。 如果这是C ++,则只需将它们设为私有,然后在“ set”函数中进行类型检查。鉴于这是不可能的,是否有任何方法可以限制变量的类型,以便在为其分配了错误类型的值时在运行时发生错误/异常?还是我需要在使用它们
我正在使用Mockito在Flutter应用程序中对http请求应用单元测试。 要测试的代码: 我得到了以下错误:“Null”类型不是类型转换中“Future”类型的子类型 已经使用构建运行器成功生成了模拟 我还尝试更新模拟类并将返回值更改为 我得到:键入“未来”