C# 将JSON反序列化回原始模型的问题

C# 将JSON反序列化回原始模型的问题,c#,json,C#,Json,为什么这个JSON不能反序列化回它从中序列化的模型?它将反序列化为一个Bar列表,但不会序列化为实现Bar列表的对象 public class Bars : List<Bar> { } public class Bar { public decimal Open { get; set; } public decimal High { get; set; } public decimal Low { get; set; } public decima

为什么这个JSON不能反序列化回它从中序列化的模型?它将反序列化为一个Bar列表,但不会序列化为实现Bar列表的对象

public class Bars : List<Bar>
{

}

public class Bar
{
    public decimal Open { get; set; }
    public decimal High { get; set; }
    public decimal Low { get; set; }
    public decimal Close { get; set; }
}

private void test()
{
    Bars bars = new Bars()
    {
        new Bar(){Open = 1.5269M, High = 1.6001M, Low = 1.4012M, Close = 1.5277M},
        new Bar(){Open = 1.5277M, High = 1.6003M, Low = 1.5276M, Close = 1.7008M},
        new Bar(){Open = 1.7008M, High = 1.9003M, Low = 1.4276M, Close = 1.60098M}
    };

    JavaScriptSerializer jss = new JavaScriptSerializer();

    string json = jss.Serialize(bars);

    //works
    var dsBars1 = jss.Deserialize<List<Bar>>(json);

    //fails
    var dsBars2 = jss.Deserialize<Bars>(json);

}
公共类栏:列表
{
}
公共类酒吧
{
公共十进制开放{get;set;}
公共十进制高位{get;set;}
公共十进制低位{get;set;}
公共十进制关闭{get;set;}
}
专用无效测试()
{
钢筋=新钢筋()
{
新杆(){Open=1.5269M,High=1.6001M,Low=1.4012M,Close=1.5277M},
新杆({Open=1.5277M,High=1.6003M,Low=1.5276M,Close=1.7008M},
新杆({打开=1.7008M,高=1.9003M,低=1.4276M,关闭=1.60098M}
};
JavaScriptSerializer jss=新的JavaScriptSerializer();
字符串json=jss.Serialize(条);
//工作
var dsBars1=jss.Deserialize(json);
//失败
var dsBars2=jss.Deserialize(json);
}
您可以使用。下面的代码工作

var json = JsonConvert.SerializeObject(bars);
var dsBars1 = JsonConvert.DeserializeObject<List<Bar>>(json);
var dsBars2 = JsonConvert.DeserializeObject<Bars>(json);
var json=JsonConvert.serialized对象(条);
var dsBars1=JsonConvert.DeserializeObject(json);
var dsBars2=JsonConvert.DeserializeObject(json);