如何使JavaScriptSerializer在反序列化后自动调用构造函数/方法/任何东西来初始化值

本文关键字:任何东 方法 初始化 构造函数 调用 JavaScriptSerializer 何使 反序列化 | 更新日期: 2023-09-27 17:59:00

我在玩JSON和。NetJavascriptSerializer,到目前为止一切看起来都很好,很有趣,这是我的代码:

    JavaScriptSerializer serializer = new JavaScriptSerializer();                    
    myObject = serializer.Deserialize<MyObject>(myJsonString);

现在,我想更进一步,执行一些初始化,比如在使用反序列化创建MyObject之后,在其内部设置一些值。我尝试过向MyObject类public MyObject()添加一个无参数构造函数,并在那里设置值,但它似乎不会自动调用。

在反序列化之后,如何调用某些初始化方法/构造函数?请注意,我只想使用JavascriptSerializer(这是我现在正在学习的),不想使用datacontractserializer或其他json库或外部dll。感谢阅读!

如何使JavaScriptSerializer在反序列化后自动调用构造函数/方法/任何东西来初始化值

JavaScriptSerializer.Deserialize<T>,我不知道构造函数是如何被调用的。

然而,有一种方法JavaScriptSerializer.RegisterConverters,它允许自定义转换器,您可以在其中进行自己的初始化

备注

您可以使用RegisterConverters方法向JavaScriptSerializer实例注册一个或多个自定义转换器。注册自定义转换器时,JavaScriptSerializer使用转换器来序列化托管类型,并将JSON字符串反序列化为托管类型。

和来自JavaScriptConverter

备注

JavaScriptConverter类使您能够为JavaScriptSerializer类本机不支持的托管类型实现序列化和反序列化过程。当您需要对序列化和反序列化过程进行更多控制时,也可以使用JavaScriptConverter。

唯一的其他方法是手动调用某个initialization()方法。