1

我正在玩 JSON 和 .Net JavascriptSerializer,到目前为止一切看起来都很好而且很有趣,这是我的代码:

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

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

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

4

1 回答 1

2

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

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

评论

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

并且从JavaScriptConverter

评论

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

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

于 2013-02-14T12:23:25.083 回答