c# - DataContractJsonSerializer - 反序列化 List<object> 中的 DateTime

标签 c# json datacontractjsonserializer

我在使用 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 有一个构造函数,该构造函数接受可用于设置 DateTimeFormatDataContractJsonSerializerSettings 对象:

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/

相关文章:

c# - 在 Windows Phone 上将 json 反序列化为对象 c#

c# - 没有默认构造函数和自动属性,为什么它仍然可以编译

c# - System.BadImageFormatException - 将 DLL 更新到最新版本时 token 无效?

c# - WPF:无法在没有可怕视觉效果的情况下调整窗口大小

javascript - 如何一一执行url请求而不导致堆栈溢出? ( Node .JS)

.net - 使用 DataContractJsonSerializer 将 Dictionary<TKey, TValue> 序列化为 JSON

c# - DataGridView 过滤使用 BindingSource(CustomClassObjects)

javascript - undefined 不是一个函数(评估 x.json())

json - 如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?

c# - JSON十进制加倍