JsonConvert.DeserializeObject<IFileInfo[]>(json);
上面的代码默认情况下会序列化失败,因为上面的IFileInfo是一个接口类型。
解决的办法是加上配置文件:
var settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; settings.TypeNameHandling = TypeNameHandling.Auto; var json = JsonConvert.SerializeObject(data, settings);
最主要是标红部分的这个语句,这样序列化时会加上具体的类的类型名称。
解析的时候也加上这个配置信息:
var settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; settings.TypeNameHandling = TypeNameHandling.Auto; return JsonConvert.DeserializeObject<List<IFileBase>>(json, settings);