我对 WCF 有点陌生,并将尝试清楚地描述我正在尝试做的事情。
我有一个使用 JSON 请求的 WCF 网络服务。在大多数情况下,我在发送/接收 JSON 方面做得很好。例如,以下代码运行良好且符合预期。
发送的 JSON:
{ "guy": {"FirstName":"Dave"} }
周转基金:
[DataContract]
public class SomeGuy
{
[DataMember]
public string FirstName { get; set; }
}
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
public string Register(SomeGuy guy)
{
return guy.FirstName;
}
这将按预期返回一个带有“Dave”的 JSON 对象。问题是我不能总是保证我收到的 JSON 将与我的 DataContract 中的成员完全匹配。例如,JSON:
{ "guy": {"firstname":"Dave"} }
由于大小写不匹配,将无法正确序列化。guy.FirstName 将为空。这种行为是有道理的,但我真的不知道如何解决这个问题。我是否必须在客户端强制使用字段名称,还是有办法在服务器端进行协调?
一个可能相关的问题:我可以接受通用 JSON 对象并将其序列化为 StringDictionary 或某种简单的键值结构吗?所以无论在 JSON 中发送什么字段名称,我都可以访问已发送给我的名称和值吗?现在,我可以读取我收到的数据的唯一方法是它是否与预定义的 DataContract 完全匹配。