2013-07-30 94 views
2

我需要一些幫助在這裏將C#日期時間轉換爲Json序列化日期格式

我試圖通過發送一個json對象來進行API調用。

但我努力將C#datetime轉換爲正確的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中格式化datetime,並且你們是否認爲json這個json對象是好的?我使用.NET 2.0框架

+2

JSON沒有標準的日期格式,所以有幾種不同的常用格式。 API期望的日期格式是什麼?是否有文檔? –

回答

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; } 
    } 
    .... 
    } 
} 

可以使用的方法SerializeObjectJSON.net

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

我知道這看起來像更多的代碼,但我相信它會爲你節省很多的麻煩,今後和任何其他開發者在看你的代碼。

+0

順便說一句,我忘了提及我使用.NET 2.0,所以需要在該框架中工作的東西。 – dnts2012

+0

謝謝,但你不能在2.0用戶system.web.Extension.dll atleast我沒有從VS2012可用,我使用Json.NET,但我仍然無法使用JavaScriptSerializer。 – dnts2012

+0

如果您使用的是Json.NET,那麼您不需要JavaScriptSerializer。更新的代碼。我不記得是否可以在C#2.0中使用對象初始化器,但只需像通常那樣創建模型類。 – CodingIntrigue

相關問題