我正在玩JSON和.Net JavascriptSerializer,到目前为止它看起来都很好玩,这是我的代码:
JavaScriptSerializer serializer = new JavaScriptSerializer();
myObject = serializer.Deserialize<MyObject>(myJsonString);
现在我想通过执行一些初始化更进一步,比如在使用反序列化创建它之后在MyObject中设置一些值。我已经尝试将一个无参数构造函数添加到MyObject类public MyObject()
,并在那里进行值的设置,但似乎没有自动调用。
如何在反序列化之后调用一些初始化方法/构造函数?请注意,我只想使用JavascriptSerializer(这就是我现在正在学习的东西),不要使用datacontractserializer或其他json库或外部dll。谢谢你的阅读!
答案 0 :(得分:2)
从JavaScriptSerializer.Deserialize<T>
开始,我看不到如何调用构造函数。
然而,方法JavaScriptSerializer.RegisterConverters
允许自定义转换器,您可以在其中进行自己的初始化
<强>说明强>
您可以使用RegisterConverters方法向JavaScriptSerializer实例注册一个或多个自定义转换器。注册自定义转换器时,JavaScriptSerializer使用转换器来序列化托管类型并将JSON字符串反序列化为托管类型。
<强>说明强>
JavaScriptConverter类使您能够为JavaScriptSerializer类本身不支持的托管类型实现序列化和反序列化过程。当您需要对序列化和反序列化过程进行更多控制时,您还可以使用JavaScriptConverter 。
唯一的另一种方法是手动调用一些initialization()
方法。