C# 对象数据类型的Json序列化问题
我正在处理WPF应用程序。在这个应用程序中,我们有一个“同步”功能。也就是说,用户可以将本地状态同步到服务器,或者从服务器同步本地状态 状态文件的当前结构如下所示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
[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; }
}