JSON序列化/反序列化不匹配(ASP.Net)

时间:2010-01-05 11:02:19

标签: json serialization

当我在页面中调用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”。

问题是,我需要更改什么才能使序列化与反序列化兼容?

非常感谢 乌鲁

2 个答案:

答案 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}}