わかりました - 多数の変更があり、その結果、Json 出力にかなり根本的な変更が加えられました。これらの変更には、カスタム TypeConverters の適用方法も含まれます。
(少なくとも私たちにとっては) Newtonsoft シリアライザーを基本的なシリアライズ可能オブジェクト シリアライザーのように動作させる基本的なリゾルバーを作成しました。つまり、すべてのプロパティをシリアル化し、カスタム TypeConverters を使用しません...
/// <summary>
/// A resolver that will serialize all properties, and ignore custom TypeConverter attributes.
/// </summary>
public class SerializableContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
protected override IList<Newtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
var properties = base.CreateProperties(type, memberSerialization);
foreach (var p in properties)
p.Ignored = false;
return properties;
}
protected override Newtonsoft.Json.Serialization.JsonContract CreateContract(Type objectType)
{
var contract = base.CreateContract(objectType);
if (contract is Newtonsoft.Json.Serialization.JsonStringContract)
return CreateObjectContract(objectType);
return contract;
}
}
* 登録 *
MvcApplication "Application_Start" で...
GlobalConfiguration.Configuration.Formatters
.JsonFormatter.SerializerSettings.ContractResolver =
new SerializableContractResolver()
{
IgnoreSerializableAttribute = true
};