我在使用 System.Runtime.Serialization.Json.DataContractJsonSerializer
时遇到问题反序列化 List<object>
中包含的 DateTime 实例的类.我似乎无法让 DateTime 反序列化回原始类型。 DataContractJsonSerializer
始终将其反序列化为格式为 "/Date(1329159196126-0500)/"
的字符串类型.如果我使用强类型 List<DateTime>
运行它,它会很好地序列化和反序列化。 ,但是我正在寻找方法让序列化器在遇到 object
的简单列表或数组时识别并正确反序列化 DateTimes .
请注意,DateTimes 是此列表将永远包含的除基元和字符串之外的唯一类型。 这是我用来测试它的代码片段。
var list = new List<object> { 27, "foo bar", 12.34m, true, DateTime.Now };
var serializer = new DataContractJsonSerializer(typeof (List<object>));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, list);
ms.Position = 0;
var deserializedList = serializer.ReadObject(ms) as List<object>;
}
最佳答案
在 .NET Framework 4.5 版中,DataContractJsonSerializer
有一个构造函数,该构造函数接受可用于设置 DateTimeFormat
的 DataContractJsonSerializerSettings
对象:
var ser = new DataContractJsonSerializer(typeof(CreateOmsEntryCommand),
new DataContractJsonSerializerSettings
{
DateTimeFormat = new DateTimeFormat("yyyy-MM-dd'T'HH:mm:ssZ")
});
关于c# - DataContractJsonSerializer - 反序列化 List<object> 中的 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266435/