私は .NET を使用してJavascriptSerializer
JSON をランタイム オブジェクトに逆シリアル化しています。ほとんどの場合、JSON フィールドとオブジェクト フィールドの間のマッピングは自動的に行われています。ただし、次のシナリオに直面しており、対処方法についてアドバイスをいただければ幸いです。
正方形または円である Shape の JSON 表現があるとします。例えば、
{"ShapeType":"Circle","Shape":{"Color":"Blue", "Radius":"5.3"}}
また
{"ShapeType":"Square","Shape":{"Color":"Red", "Side":"2.1"}}
これらの JSON 文字列は、以下に示すクラス階層をモデルにしています。
class ShapePacket
{
public string ShapeType; // either "Square" or "Circle"
public Shape Shape;
}
class Shape // all Shapes have a Color
{
public string Color;
}
class Square : Shape
{
public float Side;
}
class Circle : Shape
{
public float Radius;
}
JavascriptSerializer.Deserialize
この場合、バリアント型が関係しているため、単に呼び出すだけでは機能しません。JavascriptSerializer
私のデータ型の「分岐」にもかかわらず、デシリアライズするように説得する方法はありますか? 私はサードパーティのソリューションにもオープンです。