C# 对象数据类型的Json序列化问题

C# 对象数据类型的Json序列化问题,c#,wpf,serialization,json.net,C#,Wpf,Serialization,Json.net,我正在处理WPF应用程序。在这个应用程序中,我们有一个“同步”功能。也就是说,用户可以将本地状态同步到服务器,或者从服务器同步本地状态 状态文件的当前结构如下所示 [Serializable] public class State { [XmlAttribute("Priority")] public int Priority { get; set; } [XmlAttribute("Name")] public stri

我正在处理WPF应用程序。在这个应用程序中,我们有一个“同步”功能。也就是说,用户可以将本地状态同步到服务器,或者从服务器同步本地状态

状态文件的当前结构如下所示

[Serializable]
public class State
{
    [XmlAttribute("Priority")]
    public int Priority { get; set; }

    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlElement("Auto")]
    [XmlElementAttribute("AMPMConstriants", typeof(AMPMConstriants))]
    [XmlElementAttribute("CxDays", typeof(CxDays))]
   
    public object Object { get; set; }

    

}
“XmlAttribute”的目的是,我们使用xmlSerialization将状态对象本地保存为文件

出于同步目的,我们使用NewtonSOft.json将状态对象转换为“json”字符串。 您可以看到,我们使用的是数据类型“Object”,这是因为我们需要将不同类型的对象保存到同一个对象中。也就是说,“对象”值可以是“AMPMConstraints”类型,也可以是CxDays类型

但问题是当我们序列化状态对象时,并没有正确地序列化“对象”数据类型。 因此,在反序列化json字符串时,我们自然不会得到“Object”的值

我们已经研究了这个问题,并找到了一个类似于add“JsonSerializerSettings”的解决方案。您可以在下图中看到它

 private static string JsonObjectToStringSerializer<T>(T t)
        {
            string result = string.Empty;
            var jsonSerializerSettings = new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.Auto,
                            
            };
            result = JsonConvert.SerializeObject(t,  jsonSerializerSettings);
           
            return result;

        }
我们被困在这个问题上。如果你对这个问题有任何想法,请告诉我们。这将对我们有帮助


感谢

提供代码,请将真实代码作为文本而不是图像包含。我已替换了图像并添加了实际代码。看起来像
 [Serializable]
    public class AMPMConstriants
    {
        [XmlAttribute("AM")]
        public bool AM { get; set; }
        [XmlAttribute("PM")]
        public bool PM { get; set; }
      
    }
   [Serializable]
    public class CxDays
    {
        [XmlAttribute("IsSun")]
        public bool IsSun { get; set; }

        [XmlAttribute("IsMon")]
        public bool IsMon { get; set; }

        [XmlAttribute("IsTue")]
        public bool IsTue { get; set; }

        [XmlAttribute("IsWed")]
        public bool IsWed { get; set; }

        [XmlAttribute("IsThu")]
        public bool IsThu { get; set; }

        [XmlAttribute("IsFri")]
        public bool IsFri { get; set; }

        [XmlAttribute("IsSat")]
        public bool IsSat { get; set; }
    }