为了账号安全,请及时绑定邮箱和手机立即绑定

C#:如何反序列化json字符串以获得与webmethod参数相同的结果?

C#:如何反序列化json字符串以获得与webmethod参数相同的结果?

C#
慕的地10843 2021-04-06 21:18:12
现在我有一些数据如下:{"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));


查看完整回答
反对 回复 2021-04-17
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信