如何在重新序列化后让JavaScriptSerializer自动调用构造函数/方法/任何内容来初始化值?

时间:2013-02-14 11:49:35

标签: c# json javascriptserializer

我正在玩JSON和.Net JavascriptSerializer,到目前为止它看起来都很好玩,这是我的代码:

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

现在我想通过执行一些初始化更进一步,比如在使用反序列化创建它之后在MyObject中设置一些值。我已经尝试将一个无参数构造函数添加到MyObject类public MyObject(),并在那里进行值的设置,但似乎没有自动调用。

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

1 个答案:

答案 0 :(得分:2)

JavaScriptSerializer.Deserialize<T>开始,我看不到如何调用构造函数。

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

  

<强>说明

     

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

来自JavaScriptConverter

  

<强>说明

     

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

唯一的另一种方法是手动调用一些initialization()方法。