我使用.NET的JavascriptSerializer
將JSON反序列化爲運行時對象,並且大部分情況下JSON字段和對象字段之間的映射是自動的。但是,我面臨以下情況,並歡迎有關如何處理它的建議。如何處理JSON和變體對象?
想象一下,我們有一個Shape的JSON表示,它可以是Square或Circle。例如,
{"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
反序列化,儘管我的數據類型是「分支」?我也對第三方解決方案開放。
看起來像這個問題[與多態對象的數組JSON序列化](http://stackoverflow.com/questions/5186973/json-serialization-of-array-with-polymorphic-objects)。 – R0MANARMY 2011-04-08 17:40:42