4

以下のコードを使用して、プロキシ オブジェクトをシリアル化できます。

public class NHibernateContractResolver : DefaultContractResolver
{
    protected override JsonContract CreateContract(Type objectType)
    {
        if (typeof(NHibernate.Proxy.INHibernateProxy).IsAssignableFrom(objectType))
            return base.CreateContract(objectType.BaseType);
        return base.CreateContract(objectType);
    }
}

しかし、シリアル化中にオブジェクトをJSON.NET無視するにはどうすればよいですか。NHibernate Proxy

私が直面している問題は、親オブジェクトが何千もの子オブジェクトをフェッチしていることです。ここで、JSON を親オブジェクトに対してのみ送信したいので、プロキシ オブジェクトを無視して熱心に読み込まれた関係のみをフェッチしたいと考えています。

上記のコードにコメントすると、JSON.NET がプロキシ オブジェクトのシリアル化に失敗したというエラーが表示されます。

助けてください!

4

1 に答える 1

4

このようなダミークラスを書きます。

public class NhProxyJsonConverter : JsonConverter
{
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteNull();
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }

    public override bool CanConvert(Type objectType)
    {
        return typeof(INHibernateProxy).IsAssignableFrom(objectType);
    }
}
于 2013-08-31T08:31:07.920 に答える