C# 序列化问题词典<;字符串,对象>;-替代设计选项?

C# 序列化问题词典<;字符串,对象>;-替代设计选项?,c#,wcf,json,serialization,rest,C#,Wcf,Json,Serialization,Rest,我需要向wcf rest服务(4.0)发出post请求。将从客户端应用程序(jquery)和服务器端应用程序(asp.net等)调用此服务。 该服务正在公开一个持久性存储并提供CRUD操作 我对连载有意见 我读了一些与此相关的文章-> WCF方法: public bool Save(CustomType req) { ///////// } 我可能无法使用“已知类型”解决方案,因为使用此服务的每个客户端都将使用自己的自定义类型。理想情况下,服务不应该担心客户机想要持久化的类型。请注意,该服务

我需要向wcf rest服务(4.0)发出post请求。将从客户端应用程序(jquery)和服务器端应用程序(asp.net等)调用此服务。 该服务正在公开一个持久性存储并提供CRUD操作

我对连载有意见

我读了一些与此相关的文章->

WCF方法:

public bool Save(CustomType req)
{
 /////////
}
我可能无法使用“已知类型”解决方案,因为使用此服务的每个客户端都将使用自己的自定义类型。理想情况下,服务不应该担心客户机想要持久化的类型。请注意,该服务正在公开一个只保存一般状态信息的持久存储

我尝试使用Dictionary而不是Dictionary,在Dictionary中,我将json字符串表示形式os State1和State2存储为值。我遇到的问题是,当我使用DataContractJsonSerializer序列化CustomType实例时,State1和State2的json字符串由于双重序列化而嵌入了反斜杠(转义字符)

我考虑过自定义序列化而不是DataContractJsonSerializer

请让我知道你的想法


谢谢您的时间。

由于该服务显然没有按照预期的方式使用词典,也许您应该看看不同的数据结构

我所说的“以一种预期的方式”,是指快速查找。这是一个哈希表。您只需将一堆信息收集到其中,然后将其推送到客户端应用程序。所以你需要的是

List<string, List<object>>
列表

还要确保您的“对象”也是可序列化的。

因为服务显然没有按照预期的方式使用字典,也许您应该查看不同的数据结构

我所说的“以一种预期的方式”,是指快速查找。这是一个哈希表。您只需将一堆信息收集到其中,然后将其推送到客户端应用程序。所以你需要的是

List<string, List<object>>
列表

还要确保“对象”也是可序列化的。

我刚才问了一个类似的问题。没有直接的答案,但我们想出了一个解决办法:


不久前我问了一个类似的问题。没有直接的答案,但我们想出了一个解决办法:


过去,当我需要通过WCF/web服务传输字典时,我通常会从字典中进行子类化,然后实现IXmlSerializable接口,即ReadXml(),WriteXml()


这允许通过有线控制消息的格式,如果您知道要传输的数据类型,则可以实现更高效的序列化方式。

当我过去需要通过WCF/web服务传输字典时,我通常从Dictionary中进行子类化,然后实现IXmlSerializable接口,即ReadXml(),WriteXml()


这允许通过导线控制消息的格式,如果您知道要传输的数据类型,可以实现更高效的序列化方式。

谢谢。我认为这与词典无关。即使我有这个属性:`public object State{get;set;}',当我使用type State1设置State属性时,如果不指定'known types',我将无法使用DataContractJsonSerializer,因为它不知道要序列化的类型信息。有什么想法吗?谢谢。我认为这与词典无关。即使我有这个属性:`public object State{get;set;}',当我使用type State1设置State属性时,如果不指定'known types',我将无法使用DataContractJsonSerializer,因为它不知道要序列化的类型信息。有什么想法吗?谢谢,你介意提供更多关于你如何把字典换成字典的细节吗。另外,请看我对希夫回答的回复。我又加了一篇与此相关的帖子:我想你打错了——我们放了字典。我们的对象都是基本类型(string、int、DateTime、string[]等)。string[]对象导致了问题。所以我们实现了一些简单的自定义序列化,对于大多数类型基本上都调用ToString(),对于string[](这对我们来说是个问题)我们提供了一个自定义字符串表示。谢谢,是的,我指的是字典对字典。我可能需要处理更多的自定义类型,例如来自第三方控件的类等。因此可能有点棘手。谢谢,您是否介意提供更多有关如何将字典替换为字典的详细信息。另外,请看我对希夫回答的回复。我又加了一篇与此相关的帖子:我想你打错了——我们放了字典。我们的对象都是基本类型(string、int、DateTime、string[]等)。string[]对象导致了问题。所以我们实现了一些简单的自定义序列化,对于大多数类型基本上都调用ToString(),对于string[](这对我们来说是个问题)我们提供了一个自定义字符串表示。谢谢,是的,我指的是字典对字典。我可能需要处理更多的自定义类型,比如来自第三方控件的类等,所以可能有点棘手。
List<string, List<object>>