我们正在从Json.NET切换到ServiceStack.Text,并且遇到了多态集合序列化的问题。使用ServiceStack.Text序列化多态集合
在JSON.NET我用来创建一个自定义JsonCreationConverter并重写Create()方法来选择我要创建的类型 - 概述的位置:
http://dotnetbyexample.blogspot.co.uk/2012/02/json-deserialization-with-jsonnet-class.html
有问题的集合List<ItemBase>
其中可以包含FlightItem
或CarHireItem
对象。
这是我的版本的Create()方法对JSON.NET:
protected override ItemBase Create(Type objectType, JObject jsonObject)
{
var itemType = jsonObject["Type"].ToString();
switch (itemType)
{
case "flight":
return new FlightItem();
case "carhire":
return new CarHireItem();
default:
return null;
}
}
那是可能的ServiceStack?
ServiceStack中的多态集合的序列化和反序列化工作,然而,它将对象类型附加到JSON输出,例如,
"__type" : "TestProject.Model.FlightItem, TestProject"
这意味着我需要在发布JSON时提供的类型,我不具有.NET类型的API调用内的任何人都可见太热衷。
有什么建议吗?如果可以用不同的方式做到这一点,你能指点我一些例子吗?
解决了这个问题 - 感谢您的帮助 –