【发布时间】:2019-03-26 00:24:48
【问题描述】:
我正在构建与基于 .NET 的 REST API 交互的 Android 应用程序。
如果我在 SQL Server 中的表有 2 行具有以下日期时间值:
- 2019-01-01 00:00:00.000
- 2019-01-01 00:00:00.113
那么返回的json会有如下的值:
- 2019-01-01T00:00:00
- 2019-01-01T00:00:00.113
所以我不知道在创建 Gson 实例时如何为 setDateFormat 提供模式。
如果我使用GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss"),那么我的 gson 可以概括这两种情况,但它会丢失毫秒部分。
如果我使用GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"),那么我的 gson 在第二种情况下不会丢失毫秒部分,但在处理第一种情况时会抛出异常。
如何在两种情况下成功解析时间但仍然达到毫秒?任何提供的解决方案将不胜感激。我不介意我必须做的是服务器端还是客户端。
【问题讨论】:
-
只要确保在您的 JSON 文本/数据中始终包含毫秒部分,即使它等于 0。然后解析 JSON 的任何模块都可以使用统一模式。我的意思是这个假设听起来不正确“那么返回的 json 将具有以下值(意味着 2 种可能的格式)”。您可以在 JSON 中始终将其设为 1 种单一格式。
-
@peter.petrov 因为我将我的 API 配置为返回 json,而不是 WebApiConfig.cs 文件中的 xml。所以我觉得我无法控制我的 API 如何构建其内容。如何创建自己的 json 格式?
-
@peter.petrov 谢谢。根据您的提示,我终于可以告诉我的 API 始终包含毫秒。
标签: java c# json sql-server