Подтвердить что ты не робот

Атрибуты JsonIgnore не работают в ASP.NET?

У меня есть объект в моем проекте с круговыми ссылками. Я поставил [JsonIgnore] над полем следующим образом:

    [JsonIgnore]
    public virtual Foobar ChildObject { get; set; }

Я все еще получаю круговые контрольные ошибки, когда я сериализую объект. Единственные поля, которые не имеют JsonIgnore, являются строковыми полями и не должны вызывать это. Есть ли что-то еще, что мне нужно сделать, чтобы заставить JsonIgnore работать?

Спасибо!

4b9b3361

Ответ 1

Вероятно, у вас есть другое свойство, которое ссылается на родителя. Используйте параметр ReferenceLoopHandling.Ignore для предотвращения циклов саморегуляции.

using Newtonsoft.Json;

JsonSerializerSettings jsSettings = new JsonSerializerSettings();
jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

string json = JsonConvert.SerializeObject(foobars, Formatting.None, jsSettings);

Ответ 2

Если кому-то нужна реализация ASP.Net Core игнорирования дочерних ссылок, вот она.

public void ConfigureServices(IServiceCollection services)
{
...

    services.AddMvc()


         .AddJsonOptions(
            options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
        );

    ...
}

ЦСИ: https://docs.microsoft.com/en-us/ef/core/querying/related-data