为什么newtonsoft.json不序列化此属性



请考虑以下程序:(.net小提琴链接)

public class Program
{
    public static void Main()
    {
        var carsa = new ListOfCarsA();
        carsa.Cars.Add("Toyota");
        carsa.Cars.Add("Lexus");
        Console.WriteLine(JsonConvert.SerializeObject(carsa, Formatting.Indented));
        var carsb = new ListOfCarsB();
        carsb.Add("Nissan");
        carsb.Add("Infiniti");
        Console.WriteLine(JsonConvert.SerializeObject(carsb, Formatting.Indented));
    }
}
public class ListOfCarsA
{
    public string CollectionName { get { return "CarsA"; } }
    public List<string> Cars { get; set; }
    public ListOfCarsA()
    {
        Cars = new List<string>();  
    }
}
public class ListOfCarsB : List<string>
{
    public string CollectionName { get { return "CarsB"; } }
}

然后输出以下内容:

{ " CollectionName":" Carsa", "汽车": [ "丰田", "雷克萨斯" 这是给出的 }

[ "日产", " Infiniti" ]

为什么属性CollectionName不会序列化并输出CarsB,而ListOfCarsA上的相同属性会导致CarsA被序列化?

解决这个问题的方法是什么 - 我如何拥有类似于ListOfCarsB的类,但仍然有任何额外的成员序列化?我尝试使用属性[JsonProperty("CollectionName"][JsonRequired],但是这些似乎什么都不做。

这是因为您的第二个示例是列表,而第一个示例仅包含一个示例。JSON.NET知道如何从列表中创建JSON,因此忽略其余的自定义代码。除了编写自定义格式化器

外,您无能为力

相关内容

  • 没有找到相关文章

最新更新