使用继承自 List<T> 的类进行 JSON 序列化

Mos*_*one 5 c# json

我有一个类继承List<T>并添加了一个类属性

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

    private DrivenList() { }

    public DrivenList(string name) { this.Nname = name; }
}
Run Code Online (Sandbox Code Playgroud)

当使用 Newtonsoft.Json JSON 序列化对象时,我仅获得列表项。([1,2,3])

有什么想法如何将Name属性添加到结果中吗?

解决:通过将此属性添加到列表中

[JsonObject(MemberSerialization = MemberSerialization.Fields)]
public class DrivenList : List<int>
Run Code Online (Sandbox Code Playgroud)

小智 4

据我所知,Newtonsoft 你能做的就是这样:

[JsonObject(MemberSerialization = MemberSerialization.Fields)]
public class DrivenList : List<int>
{

    [JsonProperty]
    public string Name { get; set; }

    private DrivenList() { }

    public DrivenList(string name) { this.Name = name; }
}
Run Code Online (Sandbox Code Playgroud)

但这会添加您不需要的(可能)字段。

就我个人而言,我会进行组合而不是继承:

public class DrivenList
{
    public string Name { get; set; }

    public List<int> Items { get; set; }

    private DrivenList() { }

    public DrivenList(string name) { this.Name = name; }
}
Run Code Online (Sandbox Code Playgroud)