プロジェクトに循環参照のあるオブジェクトがあります。私は[JsonIgnore]を次のようにフィールドの上に置きました:
[JsonIgnore]
public virtual Foobar ChildObject { get; set; }
オブジェクトをシリアル化すると、循環参照エラーが発生します。 JsonIgnoreを持たないフィールドは文字列フィールドのみであり、これを引き起こすことはありません。 JsonIgnoreを機能させるために他に何かする必要がありますか?
ありがとう!
親にリンクしている他のプロパティがある可能性があります。使用 ReferenceLoopHandling.Ignore
自己参照ループを防ぐための設定。
using Newtonsoft.Json;
JsonSerializerSettings jsSettings = new JsonSerializerSettings();
jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
string json = JsonConvert.SerializeObject(foobars, Formatting.None, jsSettings);
子参照を無視するASP.NetCore実装が必要な場合は、ここにあります。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc()
.AddJsonOptions(
options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
);
...
}
src: https://docs.Microsoft.com/en-us/ef/core/querying/related-data