[英]Serialize to JSON (using Json.Net) while ignoring inherited members
[英]Using JSON.NET, how do I serialize these inherited members?
我有以下內容:
public class MyClass : SuperClass {
[JsonProperty]
public virtual string Id { get; set; }
}
public abstract class SuperClass {
public int GetHashCode() {
//do things here
}
}
我無法改變SuperClass
。 當我使用JsonNet序列化到Json時,我會做這樣的事情:
JsonSerializerSettings serializer = new JsonSerializerSettings {
//serializer settings
};
var jsonNetResult = new JsonNetResult {
Data = myClass,
SerializerSettings = serializer
};
return jsonNetResult;
顯然它不會序列化GetHashCode()
。 如果我走:
var jsonNetResult = new JsonNetResult {
Data = myClass.GetHashCode(),
SerializerSettings = serializer
};
它會正確序列化值,是否有一些序列化器設置我可以用來告訴它包含GetHashCode()
?
編輯:我現在應該添加,我正在創建一個只能實現這一目標的屬性,即
[JsonProperty]
public virtual int GetHashCodeJson { get { return GetHashCode(); }
對於JSON.Net而言,這與一般的.net序列化並不是一個問題。
您需要按屬性序列化對象,並且要求序列化方法的返回值。 所以沒有辦法用你想要的語法來做到這一點。
你可以這樣做:
Data = myClass.GetHashCode()
只意味着可以序列化方法(int)的返回值,而不是序列化程序完全關心該值來自何種方法。
如果你考慮一下,那么說一個值是方法的序列化返回值沒有多大意義,因為你如何反序列化呢? 您永遠無法將值寫回方法,因為它只返回值,而不是像{get; set;}這樣的屬性的雙向關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.