Json.NET から ServiceStack.Text に切り替える過程にあり、ポリモーフィック コレクションのシリアル化に関する問題に遭遇しました。
JSON.NET では、カスタム JsonCreationConverter を作成し、Create() メソッドをオーバーライドして、作成するタイプを選択していました。
http://dotnetbyexample.blogspot.co.uk/2012/02/json-deserialization-with-jsonnet-class.html
問題のコレクションは、またはオブジェクトList<ItemBase>
を含むことができるものです。FlightItem
CarHireItem
これは、JSON.NET の Create() メソッドの私のバージョンです。
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 を投稿するときに型を指定する必要があることを意味し、API 呼び出し内で .NET 型を誰にでも見えるようにすることにあまり熱心ではありません。
助言がありますか?別の方法でこれを行うことが可能である場合、いくつかの例を示してもらえますか?