Атрибуты JsonIgnore не работают в ASP.NET?
У меня есть объект в моем проекте с круговыми ссылками. Я поставил [JsonIgnore] над полем следующим образом:
[JsonIgnore]
public virtual Foobar ChildObject { get; set; }
Я все еще получаю круговые контрольные ошибки, когда я сериализую объект. Единственные поля, которые не имеют JsonIgnore, являются строковыми полями и не должны вызывать это. Есть ли что-то еще, что мне нужно сделать, чтобы заставить JsonIgnore работать?
Спасибо!
Ответы
Ответ 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