これを回避する方法はありますか?
必要なプロパティのみを公開するビュー モデルを使用し、そのビュー モデルを Json メソッドに渡すことをお勧めします。
私がお勧めするビューモデルのアプローチに従わない場合は、[ScriptIgnore]
属性も機能するはずです。
例:
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
public class User
{
public IEnumerable<Badge> Badges { get; set; }
}
public class Badge
{
[ScriptIgnore]
public User User { get; set; }
}
public class Program
{
static void Main()
{
var user = new User();
var badge = new Badge { User = user };
user.Badges = new[] { badge };
var serializer = new JavaScriptSerializer();
Console.WriteLine(serializer.Serialize(user));
}
}
クラスのプロパティ[ScriptIgnore]
から属性を削除すると、JSON のシリアル化は循環参照エラーのために失敗します。User
Badge