我有一个带有接口列表属性的对象。我需要序列化和反序列化这个对象。我正在使用 newton json 进行序列化,它将对象转换为 json,但是当我将这个 json 反序列化为对象时,它的 crate 错误“无法创建实例”。我的课是这样的
public class GridFilterModel
{
public IList<IFilter> Filter { get; set; }
}
我有一个带有接口列表属性的对象。我需要序列化和反序列化这个对象。我正在使用 newton json 进行序列化,它将对象转换为 json,但是当我将这个 json 反序列化为对象时,它的 crate 错误“无法创建实例”。我的课是这样的
public class GridFilterModel
{
public IList<IFilter> Filter { get; set; }
}
那是因为它不知道使用哪种类型来反序列化一个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; }