举一个简单的,有些陈词滥调的例子:
public interface IShape
{
public void Draw();
}
public class Rectangle : IShape
{
public Double X;
public Double Y;
public Double Width;
public Double Height;
public void Draw()
{
// draw the rectangle ...
}
}
public class Circle : IShape
{
public Double X;
public Double Y;
public Double Radius;
public void Draw()
{
// draw the Circle ...
}
}
使用JavaScriptSerializer,可以在属性中添加什么格式(如果有)类型提示反序列化它?
JavaScriptSerializer js = new JavaScriptSerializer();
Shape s = js.Deserialize<Shape>("{ \"X\": 1.0, \"Y\": 1.0, \"Radius\": 3.0 }");
文档简要提及使用__type
属性:
使用JSON字典语法的JavaScript对象。特殊元数据 包含名为“__type”的属性以确保正确的反序列化。 确保公共实例属性具有get和set访问器 确保正确的反序列化。
但是,我找不到任何特定于JavaScriptSerializer
的文档来指定正确的格式 - 或者如何让Serialize()
包含该属性。
Serialize()
包含正确的类型提示?Deserialize()
添加类型提示?答案 0 :(得分:0)
我认为你不需要__type,因为这些是普通类型。提示是这样一个javascript嵌套对象可以分配给一个类型,在c#中可能更通用,所以类型可以保留细节
这里 JavaScriptSerializer with custom Type 是代码实际创建__type项的示例。