我們正在從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調用內的任何人都可見太熱衷。
有什麼建議嗎?如果可以用不同的方式做到這一點,你能指點我一些例子嗎?
解決了這個問題 - 感謝您的幫助 –