0
我想反序列化JSON格式的對象的集合,至少有一個共同的父類,但是當ServiceStack反序列化我的請求時,我得到了我的父類類型集合中的所有元素,而不是每個單獨的子類。是否有可能創建一個自定義的反序列化器並避免ServiceStack自動反序列化。自定義JSON解串器ServiceStack
例子:
class Canine {
public Types Type { get; set; }
}
class Dog : Canine {
public Dog() {
Type = Types.Dog;
}
}
class Wolf : Canine {
public Wolf() {
Type = Types.Wolf;
}
}
public enum Types {
Canino = 1,
Perro = 2,
Lobo = 3
}
public class CanineService : Service {
public CanineResponse Post(Canine request) {
return new Canine().GetResponse(request);
}
}
我反序列化JSON這與json.NET
public class CanineConverter : JsonConverter {
public override bool CanConvert(Type objectType) {
return typeof(Canine).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
var item = JObject.Load(reader);
switch (item["Type"].Value<int>()) {
case 2: return item.ToObject<Dog>();
case 3: return item.ToObject<Wolf>();
}
return item["Type"].Value<Types>();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
throw new NotImplementedException();
}
}
謝謝您的回答,在我的具體情況,我認爲是更好地爲我與繼承堅持,即使我有看到你的鏈接。我的解決方案是爲需要它的類型創建了一個自定義的反序列化器,併爲請求創建了一種新格式,以避免ServiceStack自動對我的DTO進行取捨。 – oscaregerardo 2014-10-08 16:16:25