C# 反序列化可为Null的TimeSpan属性会引发ArgumentNullException
尝试反序列化可为null的TimeSpan属性时发生Argumentnull异常C# 反序列化可为Null的TimeSpan属性会引发ArgumentNullException,c#,json,serialization,deserialization,C#,Json,Serialization,Deserialization,尝试反序列化可为null的TimeSpan属性时发生Argumentnull异常 public class SimpleClass { private TimeSpan? m_WorkStartHr; public TimeSpan? WorkStartHr { get { return m_WorkStartHr; } set { m_WorkStartHr = value; } } } public class Progra
public class SimpleClass
{
private TimeSpan? m_WorkStartHr;
public TimeSpan? WorkStartHr
{
get { return m_WorkStartHr; }
set { m_WorkStartHr = value; }
}
}
public class Program
{
static void Main(string[] args)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
TimeSpan? dt = new TimeSpan(288000000000);
SimpleClass instance = new SimpleClass();
instance.WorkStartHr = dt;
string jsonStr = serializer.Serialize(instance);
//This code throws the exception
SimpleClass newInstance = serializer.Deserialize<SimpleClass>(jsonStr);
}
}
公共类SimpleClass
{
私人时间跨度?m_工作起点;
公共时间跨度?工作起点
{
获取{return m_WorkStartHr;}
设置{m_WorkStartHr=value;}
}
}
公共课程
{
静态void Main(字符串[]参数)
{
JavaScriptSerializer serializer=新的JavaScriptSerializer();
TimeSpan?dt=新的TimeSpan(2880000000);
SimpleClass实例=新建SimpleClass();
instance.WorkStartHr=dt;
字符串jsonStr=serializer.Serialize(实例);
//此代码引发异常
SimpleClass newInstance=serializer.Deserialize(jsonStr);
}
}
注意:如果我们将WorkStartHr设置为非Null,那么它可以正常工作。不幸的是,这是JavaScriptSerializer的一个已知问题
,但并不理想。谢谢。我会试试的。我发现的另一个解决方法是使用。这在我的情况下奏效了。微软有没有针对这个问题的解决方案?我不想使用任何变通方法。看起来微软已经基本上放弃了JavaScriptSerializer。例如,Web API使用JSON.NET,Microsoft现在为该项目做出了贡献。我建议您查看该序列化库。