使用Json.NET序列化子类

Ada*_*cer 8 c# json json.net

我试图使用Json.NET序列化一个子类.生成的json包含超类的序列化属性,但包含子类对象的属性.

这似乎与我在SO上找到的问题有关.但不得不写一个JsonConverter似乎有点矫枉过正.

示例子类:

public class MySubclass : List<string>
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

序列化样本:

MySubclass myType = new MySubclass() { Name = "Awesome Subclass" };
myType.Add("I am an item in the list");

string json = JsonConvert.SerializeObject(myType, Newtonsoft.Json.Formatting.Indented);
Run Code Online (Sandbox Code Playgroud)

结果json:

[
  "I am an item in the list"
]
Run Code Online (Sandbox Code Playgroud)

我希望结果更像这样:

{
    "Name": "Awesome Subclass",
    "Items": [
        "I am an item in the list"
    ]
}
Run Code Online (Sandbox Code Playgroud)

也许我只是在序列化时没有使用正确的配置.有人有什么建议吗?

Pao*_*tti 5

根据文件:

.NET列表(从中继承的类型IEnumerable)和.NET数组转换为JSON数组.由于JSON数组仅支持一系列值而不支持属性,因此 .NET集合声明的任何其他属性和字段都不会序列化.

所以,不要子类List<T>,只需添加第二个属性.

public class MyClass 
{
    public List<string> Items { get; set; }
    public string Name { get; set; }

    public MyClass() { Items = new List<string>(); }
}
Run Code Online (Sandbox Code Playgroud)