JSON 中的 C# Web API 2 日期格式的问题



我正在开发一个在前端使用 C# Web API 2 和 Angular 12 的大型系统。 通过 Oracle 传入到 C# 的日期是两个系统中的真实日期(不是字符串)。

它们以"2021-11-10T10:48:38"的格式出现,即使我们在 TypeScript 中将它们显示为界面中的Datetypeof()显示为 Angularstring

当尝试对这些日期对象执行任何 JS 日期操作时,它们会失败,尽管前端编译器不会捕获它们,因为它假定它们是 Date 类型,因为接口的原因。 所以它在运行时失败。

在 C# 端处理此问题的最佳方法是什么? 我可以在 Angular 端做ourDate = new Date(ourDate),这确实有效,但在我们调用 API 的任何地方执行此操作是不合理的。

我为所有标签道歉,但我不确定我应该从哪里攻击它,我假设在服务器上的 JSON 序列化步骤中。

你不能从服务器攻击它,因为JSON使用ISO 8601字符串格式将日期编码为字符串 - 响应不能在Typescript中用Date类型表示。 您应该有一个不同的类型,它只是一个只有 http 客户端层知道的响应 DTO,并将其映射到您的服务/组件已知的类型。

作为旁注,这也导致了更好的架构,域不应该真正知道或关心响应 DTO - 它是一个实现细节 - 想象一下明天你会使用二进制序列化或其他东西......你的域不应该耦合到数据提供者,这是一个不同的边界。

最新更新