使用 Json.NET 序列化子类

2024-05-24

我正在尝试使用 Json.NET 序列化子类。生成的 json 包含超类的序列化属性,但是not子类对象的属性。

这似乎与我发现的一个问题有关这里就这样 https://stackoverflow.com/q/5863496/498969。但必须写一个JsonConverter似乎有点矫枉过正。

示例子类:

public class MySubclass : List<string>
{
    public string Name { get; set; }
}

序列化示例:

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);

生成的 json:

[
  "I am an item in the list"
]

我预计结果会更像这样:

{
    "Name": "Awesome Subclass",
    "Items": [
        "I am an item in the list"
    ]
}

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


根据文档 http://james.newtonking.com/json/help/index.html?topic=html/SerializationGuide.htm:

.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>(); }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Json.NET 序列化子类 的相关文章

随机推荐