继承字典的序列化类不是序列化属性

Jon*_*lms 6 c# serialization dictionary

我有一个从 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
Run Code Online (Sandbox Code Playgroud)

我很感激有关如何使序列化使用与反序列化似乎使用相同的行为的建议。

tza*_*chs 5

来自 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; }
}
Run Code Online (Sandbox Code Playgroud)

也看看这个问题:How to serialize a Dictionary as part of its parent object using Json.Net