Сериализация списка объектов с помощью JSON.NET в C # - PullRequest
0 голосов
/ 27 августа 2018

У меня есть список, который выглядит следующим образом:

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 }

Теперь я хочу сериализовать этот List<Product> в JSON с JSON.NET,Я пытался:

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;

Есть идеи, что я делаю не так?Могу ли я предоставить больше / лучше информации?Заранее спасибо:)

1 Ответ

0 голосов
/ 27 августа 2018

Вы должны использовать настройку по умолчанию JsonConvert вместо SerializerSettings:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
};
...