#c# #json.net
#c# #json.net
Вопрос:
Я хотел захватить исключения в методе CreateProperty JSON.NET и замените тип и сообщение свойства исключением, возникшим в этом свойстве.
это то, чего я достиг до сих пор.
class CustomResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.ShouldSerialize = instance =>
{
var prop = (PropertyInfo)member;
try
{
if (prop.CanRead)
{
prop.GetValue(instance, null);
}
}
catch(Exception exception)
{
property.PropertyType = typeof(string);
property.DefaultValue = exception.Message;
return true;
}
return true;
};
return property;
}
}
и у меня есть класс.
class MyClass{
public int Id {get; set;}
public decimal Amount
{
get { throw new Exception("Test Exception"); }
}
}
теперь я пытаюсь сериализовать объект :
var obj = new MyClass();
var convertedString = JsonConvert.SerializeObject(obj, Formatting.Indented,
new JsonSerializerSettings
{
ReferenceLoopHandling =
ReferenceLoopHandling.Ignore,
Converters = new List<JsonConverter>
{
new IsoDateTimeConverter
{
DateTimeFormat =
"yyyy-MM-dd hh:mm:ss"
}
},
ContractResolver = new CustomResolver()
});
чего я пытаюсь достичь, так это :
{
"Id" : 0,
"Amount" : "Test Exception"
}
но, похоже, это не работает. кто-нибудь может мне помочь с этим.
Спасибо