我使用的是Angle 7(我猜它与2.x版相同),并且我使用的是类似于httpClient.get<Hero[]>(url)
的东西,没有其他处理。 Hero
还具有dateOfBirth
类型的Date
属性;当获得Hero
数组时,我看到typeof dateOfBirth
是string
而不是Date
。
那正常吗?一个人怎么解决呢(我是说以某种方式Date
)?
PS1:我不希望通过使用例如RxJs map
运算符,因为我可能有一棵具有许多属性的对象树面临同样的问题,因此使用map
意味着太多的工作
PS2:目前,我正在以下代码中解决某个地方(在该tap
上的一个RxJs httpClient.get
)上的问题:
if (typeof hero.dateOfBirth === 'string') {
hero.dateOfBirth = new Date(hero.dateOfBirth);
}
收到的JSON
例如:
"dateOfBirth" : "2018-12-17T20:04:32.721+0000"
答案 0 :(得分:1)
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意味着太多的工作
为什么不呢?您最终将不得不迭代;当然,您可以将其抽象到其他地方或Observable运算符中,但是在发出数据之前先格式化Observable流中的数据是有意义的,以便在其他地方保持一致。