JSON シリアル化での循環参照の解決:
JSON データを返そうとしたときに、「タイプ 'SubSonic.Schema.DatabaseColumn' のオブジェクトのシリアル化中に循環参照が検出されました」というエラー メッセージが表示されました。この問題は、オブジェクト階層に循環参照が存在することが原因で発生します。これは、JSON シリアライザーと互換性がありません。
この問題を解決するには、必要な属性のみを選択して、JSON 応答で送信されるデータを最小限に抑えることをお勧めします。オブジェクト全体を取得する代わりに、JSON 応答に必要なプロパティのみを含むビュー モデルを作成することを検討してください。例:
<code class="language-csharp">public JsonResult GetEventData() { var data = Event.Find(x => x.ID != 0); var viewData = new EventViewData { PropertyINeed1 = data.PropertyINeed1, PropertyINeed2 = data.PropertyINeed2 }; return Json(viewData); }</code>
このアプローチにより、JSON オブジェクトのサイズが削減され、循環参照が排除されます。より複雑なオブジェクト階層の場合は、AutoMapper を使用して DTO オブジェクトとビュー オブジェクトの間を自動的にマッピングし、効率を高めることができます。
以上がJSON データをシリアル化するときに循環参照を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。