如何json序列化或json反序列化对象属性IList

本文关键字:json IList 属性 IOBJ 对象 序列化 反序列化 如何 | 更新日期: 2023-09-27 18:08:42

我有一个具有interface list属性的对象。我需要序列化和反序列化这个对象。我使用牛顿json序列化它转换为json对象,但当我反序列化这个json对象的板条箱错误'无法创建一个实例'。我的班级是这样的

public class GridFilterModel
{
    public IList<IFilter> Filter { get; set; }       
}

如何json序列化或json反序列化对象属性IList<IOBJ>

这是因为它不知道使用哪种类型来反序列化IFilter (JsonSerializer默认为IList<>选择List<>) -您需要在声明中使用该类型,例如假设Filter : IFilter:

public IList<Filter> Filter { get; set; }

可以很好地序列化和反序列化。

更新以下注释

如果您不控制过滤器的类型,那么我建议创建一个DTO,其中包含您关心的所有相关数据,然后将其序列化:

public class FilterData
{
  public FilterData(IFilter filter)
  {
    // Copy data from filter argument here into local properties.
  }
}
...
public IList<FilterData> FilterData { get; set; }