我正在使用 .NETJavascriptSerializer
将 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
尽管我的数据类型中有“分支”,但有什么方法可以哄骗反序列化?我也对第三方解决方案持开放态度。