爲此,您可以使用自定義JsonConverter
。請參閱下面的基本版本爲您的目的。
public class PersonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
if (objectType == typeof(Employee))
return true;
return false;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return "";
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value);
if (t.Type != JTokenType.Object)
{
t.WriteTo(writer);
}
else
{
JObject o = (JObject)t;
o.Remove("Name"); //currently the property name is hardcoded. You could enhance this to remove any property you like
o.WriteTo(writer);
}
}
}
創建JsonConverter
您可以使用像下面反序列化過程後,
var des = JsonConvert.SerializeObject(e, new PersonConverter());
//e is the Person instance we want to convert and PersonConverter is the custom converter
//we use of serialization
請參閱本link查找有關此
您是否總是希望'Name'在您序列化子類型的Person時被忽略?如果是這樣,只是一個簡單的忽略屬性應該做的伎倆。 – mason
這只是我給出的一個例子。但我真正的基類有多個屬性和深入的對象圖。所以只是不想序列化任何基類屬性。 – Saran
按照梅森建議,使用JsonIgnore屬性標記基類中的屬性。這應該夠了吧。 – EventHorizon