問題: SubSonic JSON シリアル化における循環参照エラー
SubSonic.Schema.DatabaseColumn
を使用して JSON データを返すと、HTTP 500 エラーが発生し、「タイプ 'SubSonic.Schema.DatabaseColumn' のオブジェクトのシリアル化中に循環参照が検出されました。」というメッセージが表示されます。このエラーは、Find()
または All().ToList()
を使用してデータを取得する場合でも発生します。
ソリューション: 選択的なプロパティの取得と最適化された JSON 出力
根本的な原因は、JSON シリアライザーが処理できないオブジェクト構造内の循環参照です。この解決策には、JSON 応答に必要なプロパティのみを取得することで循環参照を防止することが含まれます。 これは 2 つの方法で実現できます:
<code class="language-csharp">return Json(new { PropertyINeed1 = data.PropertyINeed1, PropertyINeed2 = data.PropertyINeed2 });</code>
このアプローチにより、不要なデータの組み込みが回避され、JSON オブジェクトが合理化されます。
SubSonic.Schema.DatabaseColumn
) と JSON シリアル化用に設計された専用のデータ転送オブジェクト (DTO) の間のマッピングを簡素化します。この DTO にはビューに必要なプロパティのみが含まれ、循環参照が防止されます。 これにより、複雑なデータ構造に対して、より保守しやすく効率的なソリューションが提供されます。これらのメソッドのいずれかを実装すると、循環参照が排除され、目的の JSON データが正常に返されます。
以上がJSON が返す「SubSonic.Schema.DatabaseColumn のシリアル化中に循環参照が検出されました」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。