当我在页面中调用PageMethod时,序列化对象如下所示: { “d”:{ “__类型”: “MyAsembly.MyNamespace.Person”, “名称”: “乌鲁”, “年龄”:40}}
这适用于Javascript,但我的.Net反序列化程序无法理解它:
var result= new JavaScriptSerializer(new SimpleTypeResolver()).Deserialize<Person>(source);
throws System.InvalidOperationException:由于对象的当前状态,操作无效。
现在,实际问题是Activator无法创建结果对象:它不理解“MyAsembly.MyNamespace.Person”并且需要“MyAsembly.MyNamespace.Person,MyAssembly”。
问题是,我需要更改什么才能使序列化与反序列化兼容?
非常感谢 乌鲁
答案 0 :(得分:0)
好像你已经知道了答案:在JavaScript端序列化对象之前修改__type
属性的值。或者,您可以在将序列化数据推送到解串器之前对其进行替换。
问题:数据被序列化在哪里?如果您在.NET中执行此操作然后将其发送到客户端,则在返回服务器时不应进行任何修改,除非某些内容被__type
属性篡改。
答案 1 :(得分:0)
我在猜测
{"d":{"__type":"MyAsembly.MyNamespace.Person","Name":"ulu","Age":40}}
应该是
{"d":{"__type":"MyAssembly.MyNamespace.Person","Name":"ulu","Age":40}}