在 C# 中使用 JSON.NET 序列化对象列表
Serialize list of objects with JSON.NET in C#
我有一个如下所示的列表:
List<Product> products = new List<Product>();
Product p1 = new Product(1, "Apple", new Description("Red Apple"))
Product p2 = new Product(2, "Banana", new Description("Yellow Banana"))
products.Add(p1);
products.Add(p2);
一个产品看起来像这样:
//Product model
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Description descriptions { get; set; }
//Description model
public string description { get; set }
现在我想用 JSON.NET 将这个 List<Product>
序列化为 JSON。我试过:
var json = JsonConvert.SerializeObject(products);
但是我得到以下错误:
Newtonsoft.Json.JsonSerializationException: 'Self referencing loop detected for property 'Module' with type 'System.Reflection.RuntimeModule'.
我的 Startup.cs
文件中还有以下行应该避免循环:
xy.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
知道我做错了什么吗?我可以提供 more/better 信息吗?
提前致谢:)
您应该使用 JsonConvert
的默认设置而不是 SerializerSettings
:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
};
我有一个如下所示的列表:
List<Product> products = new List<Product>();
Product p1 = new Product(1, "Apple", new Description("Red Apple"))
Product p2 = new Product(2, "Banana", new Description("Yellow Banana"))
products.Add(p1);
products.Add(p2);
一个产品看起来像这样:
//Product model
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Description descriptions { get; set; }
//Description model
public string description { get; set }
现在我想用 JSON.NET 将这个 List<Product>
序列化为 JSON。我试过:
var json = JsonConvert.SerializeObject(products);
但是我得到以下错误:
Newtonsoft.Json.JsonSerializationException: 'Self referencing loop detected for property 'Module' with type 'System.Reflection.RuntimeModule'.
我的 Startup.cs
文件中还有以下行应该避免循环:
xy.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
知道我做错了什么吗?我可以提供 more/better 信息吗? 提前致谢:)
您应该使用 JsonConvert
的默认设置而不是 SerializerSettings
:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
};