1. ホーム
  2. c#

[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。

2022-01-30 21:51:49

質問事項

簡単なJSONを返そうとしているのですが、以下のような問題があります。

public JsonResult GetEventData()
{
    var data = Event.Find(x => x.ID != 0);
    return Json(data);
}

この質問のタイトルにあるような例外でHTTP 500が表示されます。また、次のことも試してみました。

var data = Event.All().ToList()

これでも同じ問題が発生しました。

これはバグでしょうか、それとも私の実装でしょうか?

解決方法を教えてください。

オブジェクトの階層に循環参照があるようですが、これはJSONシリアライザでサポートされていません。すべてのカラムが必要ですか?ビューで必要なプロパティだけをピックアップすることができます。

return Json(new 
{  
    PropertyINeed1 = data.PropertyINeed1,
    PropertyINeed2 = data.PropertyINeed2
});

こうすることで、JSONオブジェクトが軽量化され、理解しやすくなります。多くのプロパティがある場合 オートマッパー を使用することができます。 自動的に は、DTO オブジェクトと View オブジェクトの間でマッピングします。