我有一个继承自 Dictionary 的类,并且有几个属性。当我序列化时,它仅序列化字典而不序列化属性。如果我有一个包含属性的有效负载,它会反序列化为它们。如何让它序列化我的对象(包括属性)?
public class Maintenance : Dictionary<string, dynamic>
{
public int PersonId { get; set; }
}
return JsonConvert.DeserializeObject<T>(jsonString); //Populates PersonId and all other properties end up in the dictionary.
return JsonConvert.SerializeObject(maintenance); //Only returns dictionary contents
我很感激有关如何使序列化使用与反序列化似乎使用的行为相同的行为的建议。
来自 Json.Net 文档:
“请注意,序列化时只有字典名称/值会写入 JSON 对象,反序列化时 JSON 对象上的属性将添加到字典的名称/值中。序列化期间会忽略 .NET 字典上的其他成员。”
摘自此链接:http://www.newtonsoft.com/json/help/html/SerializationGuide.htm
假设您希望字典的键和值与 json 输出中的 PersonId 处于同一层次结构级别,则可以使用JsonExtensionData
具有组合而不是继承的属性,如下所示:
public class Maintenance
{
public int PersonId { get; set; }
[JsonExtensionData]
public Dictionary<string, dynamic> ThisNameWillNotBeInTheJson { get; set; }
}
也看看这个问题:如何使用 Json.Net 将字典序列化为其父对象的一部分
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)