将Hashtable发送到Web服务

时间:2009-10-12 12:09:53

标签: c# asp.net json dictionary web-services

我试图将带有通用键和值类型的项目列表发送到asp.net webservice。 我怎样才能做到这一点? 我用List<Dictionary<String, String>>试了一下,但这不起作用。我没有异常,但是当我在webserivice中破解时,我的集合为空。 数据可能如下所示: {"Data":{"fieldtype":"integer","isrequired":true,"isrequirederror":"Invalid Data"}}. 但正如我所说,Keys是通用的,有时会有更多的属性,有时候不是。

很多

这篇文章无法帮助我的顺便说一下: How to send a hashtable to an asmx webservice?

3 个答案:

答案 0 :(得分:1)

实现IDictionary的类无法序列化为XML,这是XmlSerializer类的限制。它通常的解决方法是实现IXmlSerializable以提供自定义序列化逻辑,如shown here。另一种选择是将字典转换为键/值对列表

答案 1 :(得分:1)

如果您想在服务中引入任何类型的泛型 - 从序列化/反序列化问题开始并完成互操作性问题,您将特别难以使用SOA和WCF。

不要使用通用参数。由于读/写操作性能,Hashtable(或Dictionary)仅在进程内使用中才有意义。如果您想通过线路传输这种格式的内容,请使用以下结构: 对的列表(字符串,字符串)。

答案 2 :(得分:0)

{"Data":
 {"fieldtype":"integer",
  "isrequired":true,
  "isrequirederror":"Invalid Data"
 }
}

:这不是List<Dictionary<String, String>> 这是一个Dictionary<string, Dictionary<String, String>>
这有帮助吗?