3

我有一个带有接口列表属性的对象。我需要序列化和反序列化这个对象。我正在使用 newton json 进行序列化,它将对象转换为 json,但是当我将这个 json 反序列化为对象时,它的 crate 错误“无法创建实例”。我的课是这样的

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

1 回答 1

2

那是因为它不知道使用哪种类型来反序列化一个IFilter成(JsonSerializer 默认选择一个List<>for IList<>) - 您需要在声明中使用这种类型,例如假设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; }
于 2013-04-12T08:27:48.810 回答