我正在使用Json.Net进行序列化.我有一个带有词典的类:
public class Test
{
public string X { get; set; }
public Dictionary<string, string> Y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式序列化此对象以获取以下JSON
{
"X" : "value",
"key1": "value1",
"key2": "value2"
}
Run Code Online (Sandbox Code Playgroud)
其中"key1","key2"是字典中的键?
我有一个当前从 Dictionary 继承的类,然后向其中添加了一些第一类成员属性。大致:
public class Foo : Dictionary<string, string>
{
public string Bar { get; set; }
public string Baz { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然而,将此对象的实例序列化为 JSON 后,序列化程序似乎只发出我存储在字典中的键/值对。即使我将 DataMember 属性应用于新的第一类属性,JSON 序列化程序似乎也不知道如何处理这些属性,而是忽略它们。
我假设我缺少一些基本的基本知识,但是在 .net 的 JSON 序列化器上搜索代码示例和文档时,我只发现了一些与我正在做的事情不太匹配的琐碎示例。我们从其他基类派生的所有其他类似乎都没有表现出这个问题,特别是从通用字典派生的这个类让我们感到不舒服。
[编辑] 除了将字典作为一流属性移入 Foo 之外,还有什么办法可以实现这一点吗?我假设挂断是序列化器不知道如何“命名”字典以将其与其他成员区分开来?