我試圖反序列化/序列化一個時間跨度,使用JSON將序列化/反序列時間跨度
但當JSON是送它設置爲00:00:00 是這甚至可能做什麼?
謝謝! -Kevin
順便說一句,語言是C#,使用Visual Studio 2008
我試圖反序列化/序列化一個時間跨度,使用JSON將序列化/反序列時間跨度
但當JSON是送它設置爲00:00:00 是這甚至可能做什麼?
謝謝! -Kevin
順便說一句,語言是C#,使用Visual Studio 2008
我想通了,很顯然這是一個MS設計缺陷...
由於時間跨度不能是一個無參數的對象。 XML無法重新創建它。
看看這個網站。 http://forums.silverlight.net/forums/p/51793/135450.aspx
所以。因此TimeSpan無法轉換。執行此操作的簡單方法是 將時間範圍更改爲字符串,然後發送該字符串。 並使用TimeSpan.TryParse(String);
XML與你的問題有什麼關係? – Crisfole 2014-06-10 12:44:43
@Crisfole我認爲,而不是「XML」,他指的是他使用的任何序列化器(其中很多序列化爲XML和JSON)。 – 2015-12-29 22:57:38
http://msdn.microsoft.com/en-us/library/bb412179.aspx
The JSON serializer throws a serialization exception for data contracts that have multiple members with the same name, as shown in the following sample code.
Copy
[DataContract]
public class TestDuplicateDataBase
{
[DataMember]
public int field1 = 123;
}
[DataContract]
public class TestDuplicateDataDerived : TestDuplicateDataBase
{
[DataMember]
public new int field1 = 999;
}
如果您應用確切的格式,您可以使用TimeSpan。格式爲: 「0.00:00:00.0000」
設置時間跨度到30分鐘
var jsonData = JSON.stringify({
myDataObject: {
TimeSpanValue : "0.00:" + $("#InputWithMinVal").val() + ":00.0"
}
});
該解決方案爲我工作。我使用.Net框架4.0的MVC 4.0。
我試過了#Jessycormier的方法,它對我沒有用。 我運行DataContractJsonSerializer,看看它會產生什麼,我發現給了我一個看起來更像這樣的值。
{"PassedTimeSpan":"P1DT2H3M4S"}
上面顯示的值爲1天,2小時,3分鐘和4秒。
所以看起來格式是:
[ - ] P [{天} d] [T [{小時} H] [{分鐘} M] [{秒} S]]
其中:
- 表示負入庫時間,省略了對正值
p必須是第一個字符(除非負時間值)
T必須先於噸時間的一部分。如果0
感謝您寫下通用模板!基於此,我可以編寫下一個函數:formatTime = function(jsonTime)var re =/- ?P(?:\ d + D)?(?: T(?:(\ d +)H)?( (\ d +)M)((\ d +)S))/????; var timeArray = re.exec(jsonTime); var h = timeArray [1] == undefined? 「」:timeArray [1]; var hr =「00」+ h; var hour = hr.substr(hr.length - 2,2); var m = timeArray [2] ==未定義? 「」:timeArray [2]; var min =「00」+ m; var minute = min.substr(min.length - 2,2); 返回小時+「:」+分鐘; } – LoBo 2015-06-03 08:56:26
這是一個ISO 8601持續時間:https://en.wikipedia.org/wiki/ISO_8601#Durations – MikeJansen 2015-09-22 14:40:08
這些答案都是過時可以省略
[] =可選的一部分,所以我想我會提供更新更好的答案。 moment.js現在直接支持.NET Timespan
序列化格式。
隨着2.1.0版本,這是支持:
moment.duration('23:59:59');
moment.duration('23:59:59.999');
moment.duration('7.23:59:59.999');
moment.duration('23:59'); // added in 2.3.0
串行使用哪? JavaScriptSerializer?DataContractJsonSerializer?你可以發佈一個不起作用的小代碼示例嗎? – Oleg 2010-07-12 22:20:33
我使用Newtonsoft.json.jsonconvert。 所以我做的是。 JsonConvert.SerializeObject(TimeSpan); – Kevin 2010-07-13 13:36:52