gpt4 book ai didi

c# - Newtonsoft JSON Collection of Interfaces 序列化错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:53 25 4
gpt4 key购买 nike

我正在使用 C# .NET 4.0、Newtonsoft JSON 4.5.0。

public class Recipe
{
[JsonProperty(TypeNameHandling = TypeNameHandling.All)]
public List<IFood> Foods{ get; set; }
...
}

我想序列化和反序列化这个 Recipe 对象。如果我在应用程序生命周期内序列化和反序列化对象,这会成功,但如果我序列化对象,退出应用程序然后反序列化它,那么它会抛出一个异常,它无法实例化 IFood(因为它是一个接口(interface))。

问题是它没有序列化接口(interface)的实现。

"$type": "System.Collections.Generic.List`1[[NSM.Shared.Models.IFood, NSMShared]], mscorlib"

我尝试使用 TypeNameHandling.Object 和 Array 和 Auto,但没有帮助。有没有办法正确序列化它?或者至少在反序列化之前定义类映射?

编辑:我正在使用 JSON 和 Hammock ( http://code.google.com/p/relax-net/ ),CouchDB 的 C# 驱动程序,它在内部序列化和反序列化对象。如前所述,问题在于它没有序列化接口(interface)实现。

最佳答案

这是关键,您必须添加此属性,因为它定义了如何处理集合中的项目。

[JsonProperty(ItemTypeNameHandling = TypeNameHandling.Auto)]

public class Recipe
{
[JsonProperty(ItemTypeNameHandling = TypeNameHandling.Auto)]
public List<IFood> Foods{ get; set; }
...
}

关于c# - Newtonsoft JSON Collection of Interfaces 序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12325067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com