【问题标题】:Modifiy JSON Date time object format修改 JSON Datetime 对象格式
【发布时间】:2014-10-16 16:03:45
【问题描述】:

您好,我正在编写一个返回 DateTime 的 JSON 网络服务。

它以 EPOCH 格式返回日期时间。是否可以修改它返回的 JSON 日期格式。

代码sn-p

  [ServiceContract]
    public interface ITMAppServices
    {
          [OperationContract]
          [WebGet(UriTemplate = "/Test",
          RequestFormat = WebMessageFormat.Json,
          ResponseFormat = WebMessageFormat.Json)]

        DateTime GetData();

    }

实际实现

public class TMAppServices : ITMAppServices
 {
     public DateTime GetData()
     {
          return DateTime.Now;
     }
 }

我只是在 C# 中返回 datetime.now

以 EPOCH 格式输出:

"/日期(1413399311687+0300)/"

我希望以 C# 返回的相同格式输出 或者如果我从 SQL 获取日期时间

【问题讨论】:

  • return DateTime.Now;EPOCH 格式返回日期?
  • 是的。它实际上是一个 JSON 网络服务。当我以这种方式运行服务时 localhost:64964/TMAppServices.svc/Test 它返回 "\/Date(1413403048647+0300)\/"

标签: c# json datetime


【解决方案1】:

看起来您正在编写 WCF 服务。默认情况下,WCF 使用DataContractJsonSerializer 进行 JSON 序列化 - 它使用这种格式。

您应该考虑使用replacing it with JSON.Net - 或者最好使用ASP.Net WebAPI 来编写您的服务 - 它已经使用了JSON.Net

JSON.Net 将(默认)使用ISO-8601 序列化格式。这是通过网络发送日期的首选格式,尤其是在 JSON 中。例如,"2014-10-15T21:54:00-07:00"

您应该使用DD MM YYYY 格式,因为JSON 旨在机器可读。如果具有MM DD YYYY 文化的机器尝试读取字符串,它可能会误解该值。例如,“1/2/2014”可以读作 1 月 2 日或 2 月 1 日。

顺便说一句 - 您可能应该考虑在 .NET 中使用 DateTimeOffset 类型而不是 DateTime

【讨论】:

  • 感谢您的回复。我的意图不是采用 DD MM YY 格式。编辑了我的帖子。将尝试 JSON.Net
猜你喜欢
  • 1970-01-01
  • 2017-07-25
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多