现在我有一些数据如下:{"parameters":{"fields":["a","b","c"]}并且我使用ajax将请求发送到.net WebMethod,如下所示:$.ajax({ url: 'Query/Query.asmx/test2?nocache=1', dataType: "json", data: JSON.stringify(data), type: 'POST', contentType: "application/json; charset=utf-8",})我在query.asmx中使用的WebMethod是:[WebMethod]public string test2(Dictionary<string, object> parameters){ return "ok";}我们可以看到parameters["fields"]is类型System.Object[]但是现在我需要压缩数据并在后端将其解压缩,然后数据变成一个字符串(解压缩后)。现在,我想对它进行反序列化以使其与以前的类型完全相同。解压缩后,数据变为JSON字符串:"{\"parameters\":{\"fields\":[\"a\",\"b\",\"c\"]}}"现在,我想使用JavaScriptSerializer将其反序列化为相同的类型。但是我能得到的是parameters["fields"]类型,System.Collections.ArrayList而不是System.Object[]我需要的类型。代码如下public class TestDataObject{ public Dictionary<string, object> parameters { get; set; }}--var serializer = new JavaScriptSerializer();var a = serializer.Deserialize<TestDataObject>(d);所以问题是:我是否有办法将其反序列化为完全相同的类型?由于已经为某些自定义类型实现了一些javascriptSerializer转换器,因此无法使用其他库。
2 回答
SMILET
TA贡献1796条经验 获得超4个赞
在中JavascriptSerializer,有一种方法ConvertToType可用于将对象转换为类实例。之后DeserializeObject()被调用,结果类型正是我想要的。因此,代码可以是:
var b = serializer.DeserializeObject(d);
var c = serializer.ConvertToType(b, typeof(TestDataObject));
- 2 回答
- 0 关注
- 172 浏览
添加回答
举报
0/150
提交
取消