【问题标题】:Convert C# datetime to Json serialized Date Format将 C# 日期时间转换为 Json 序列化日期格式
【发布时间】:2013-07-30 06:47:55
【问题描述】:

我需要一些帮助

我正在尝试通过向其发送 json 对象来进行 API 调用。

但我正在努力将 C# 日期时间转换为正确的 json 格式。

这是我的示例代码。

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("example.com");

httpWebRequest.ContentType = "text/json";

httpWebRequest.Method = "POST";

using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{

    string json = "{\"ReferenceNumber\":\"Testing OAKLAND\",\"CustomerNotes\":\"Testing\",\"DeliveryDate\":" + "Date(" + System.DateTime.Now.Ticks + ")" +
                         ",\"OrderLineItems\":[{\"ItemEntityId\":14771,\"Quantity\":2}]}";

    streamWriter.Write(json);
    streamWriter.Close();
}

HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))
{

    string responseText = streamReader.ReadToEnd();

    Response.Write(responseText);
    Response.End();
    }

请指导我如何在 json 中格式化日期时间,你们认为 json 这个 json 对象好吗?我正在使用 .NET 2.0 框架

【问题讨论】:

  • JSON 没有标准的日期格式,所以常用的有几种不同的格式。 API 期望的日期格式是什么?有相关文档吗?

标签: c# asp.net json .net-2.0 json.net


【解决方案1】:

改用序列化。它将处理您需要做的任何转义和转换。

对于 .NET 2.0,您没有匿名类型的奢侈,因此您必须为要序列化的数据创建一个模型类:

public class OrderModel {
  private string _referenceNumber;
  public string ReferenceNumber {
    get { return _referenceNumber; }
    set { _referenceNumber = value; }
  }
  ...
  class OrderItem {
    private int _itemEntityId;
    public int ItemEntityId {
      get { return _itemEntityId; }
      set { _itemEntityId; }
    }
    ....
  }
}

可以使用JSON.net的SerializeObject方法

string json = JsonConvert.SerializeObject(new OrderModel {
  ReferenceNumber = "Testing OAKLAND",
  CustomerNotes = "Testing",
  DeliveryDate = DateTime.Now,
  OrderLineItems = new List<OrderItem>() {
    new OrderItem { ItemEntityId = 14771, Quantity = 2 }
  }
});

我知道这似乎需要更多代码,但相信我,它会为您在未来和其他查看您的代码的开发人员省去很多麻烦。

【讨论】:

  • 顺便说一句,我忘了提到我正在使用 .NET 2.0,所以需要在该框架中工作。
  • 谢谢,但你不能在 2.0 中使用 System.web.Extension.dll,至少我没有从 VS2012 获得它,而且我正在使用 Json.NET,但我仍然无法使用 JavaScriptSerializer。
  • 如果您使用的是 Json.NET,则不需要 JavaScriptSerializer。更新了代码。我不记得你是否可以在 C# 2.0 中使用对象初始化器,而是像往常一样创建模型类。
  • 感谢您的帮助。日期现已格式化,json 对象现在看起来像这样 {"CustomerNotes":"Testing","DeliveryDate":"2013-07-30T12:32:04.4826274+05 :00","ReferenceNumber":"Testing OAKLAND","OrderItem":[{"ItemEntityId":14771,"Quantity":2}]} 但 api 仍然不接受并抛出一些奇怪的错误,说模型无效.. 谢谢到目前为止为您提供帮助。 :)
猜你喜欢
  • 1970-01-01
  • 2017-12-09
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 2017-03-08
  • 2017-10-12
相关资源
最近更新 更多