Я пытаюсь десериализовать/сериализовать временную шкалу,
но когда json отправляется на 00:00:00, это вообще возможно?
Я пытаюсь десериализовать/сериализовать временную шкалу,
но когда json отправляется на 00:00:00, это вообще возможно?
Я понял это, по-видимому, это недостаток дизайна MS...
Поскольку TimeSpan не может быть объектом без параметров. XML не может воссоздать его.
Взгляните на этот сайт. http://forums.silverlight.net/forums/p/51793/135450.aspx
Так. Поэтому TimeSpan не может быть преобразован. Простой способ сделать это - изменить временной интервал на строку, а затем отправить строку заново. и использовать TimeSpan.TryParse(String);
Я попробовал метод #Jessycormier, и это не сработало для меня. Я запустил DataContractJsonSerializer, чтобы узнать, что он будет генерировать, и я обнаружил, что дал мне значение, которое больше похоже на это.
{"PassedTimeSpan":"P1DT2H3M4S"}
Значение, показанное выше, составляет 1 день, 2 часа, 3 минуты и 4 секунды.
Так выглядит формат:
[-] Р [{} дней D], [Т [{ч} Н] [{мин} M], [{сек} S]]
Где:
- указывает отрицательное время, опущенное для положительных значений
P должен быть первым символом (если отрицательное значение времени)
T должен предшествовать временной части времени.
[] = необязательная часть, которая может быть опущена, если 0.
Эти ответы устарели, поэтому я подумал, что дам обновленный лучший ответ. 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
Если вы применяете точный формат, вы можете использовать TimeSpan. Формат: "0.00: 00: 00.0000"
Установка TimeSpan на 30 минут
var jsonData = JSON.stringify({
myDataObject: {
TimeSpanValue : "0.00:" + $("#InputWithMinVal").val() + ":00.0"
}
});
Это решение работает для меня. Я использую MVC 4.0 с .Net Framework 4.0.
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;
}