Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化可为Null的TimeSpan属性会引发ArgumentNullException_C#_Json_Serialization_Deserialization - Fatal编程技术网

C# 反序列化可为Null的TimeSpan属性会引发ArgumentNullException

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

尝试反序列化可为null的TimeSpan属性时发生Argumentnull异常

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现在为该项目做出了贡献。我建议您查看该序列化库。