我使用.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