HttpClient GET 接收 Date 属性的字符串



我使用的是角度 7(我想版本 2.x 也是如此),我使用的是类似于httpClient.get<Hero[]>(url)的东西,没有其他处理。Hero还具有具有Date类型的dateOfBirth属性;获取Hero数组时,我看到typeof dateOfBirthstring而不是Date

这正常吗? 如何解决它(我的意思是以某种方式Date)?

PS1:我不是在寻求使用例如 RxJsmap运算符进行一些手动转换,因为我可能有一个对象树,其中许多属性面临相同的问题,因此使用map将意味着太多的工作

PS2:目前我正在解决在代码中的某个地方(该httpClient.get上的 RxJstap)的问题:

if (typeof hero.dateOfBirth === 'string') {
hero.dateOfBirth = new Date(hero.dateOfBirth);
}

收到的JSON例如:

"dateOfBirth" : "2018-12-17T20:04:32.721+0000"

JSON 格式对日期一无所知。JSON(大多数情况下)仅将单数值指定为数字、字符串、布尔值或 null。

如果您期望作为XMLHttpRequest结果的字段是Date,则需要像往常一样手动转换它:

httpClient.get<Hero[]>(url).pipe(
map(hero => hero.map(h => {
h.dateOfBirth = new Date(h.dateOfBirth);
return h;
})))

PS1:我不是在使用 RxJs map 运算符进行一些手动转换,因为我可能有一个对象树,其中许多属性面临相同的问题,所以使用 map 意味着太多的工作

为什么不呢?您最终将不得不迭代;当然,您可以在其他地方或将其抽象为 Observable 运算符,但在发出之前格式化 Observable 流中的数据是有意义的,以便它在其他地方保持一致。

最新更新