我想JSON序列化一个继承System.Exception的自定义异常对象 . JsonConvert.SerializeObject似乎忽略派生类型的属性 . 问题可以很简单地说明:
class MyException : Exception {
public string MyProperty { get; set; }
}
class Program {
static void Main(string[] args) {
Console.WriteLine(JsonConvert.SerializeObject(new MyException {MyProperty = "foobar"}, Formatting.Indented));
//MyProperty is absent from the output. Why?
Console.ReadLine();
}
}
我已经尝试在正确的位置添加DataContract和DataMember属性 . 他们没有帮助 . 我如何让它工作?
2 回答
因为Exception实现了
ISerializable
,所以Json.Net默认使用它来序列化对象 . 您可以告诉它忽略ISerializable
如下:您还可以通过覆盖
GetObjectData
方法和ctor(SerializationInfo, StreamingContext)
来将特定对象添加和检索到System.Runtime.Serialization.SerializationInfo
存储中:这样,
MyCustomObject
属性将包含在序列化和反序列化中 .