JSON有效负载中引号的处理不一致

时间:2010-08-06 12:03:26

标签: wcf wcf-data-services

为什么可以在WCF DataService中发送以下JSON字符串:

{ SomeElement: 'val1', SomeOtherElement: 'val2' }

当你必须发送像

这样的普通WCF服务时
[OperationContract,
 WebInvoke (Method = "POST",
            ResponseFormat = WebMessageFormat.Json,
            RequestFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped)]
public string SomeMehtod(string SomeElement, string SomeOtherElement)

以下JSON字符串

{ "SomeElement": "val1", "SomeOtherElement": "val2" }

这种不一致对我来说并不清楚。为什么我必须在普通的Web服务中使用双引号,而我可以省略WCF数据服务中元素名称的引号?

也许somone知道答案......

1 个答案:

答案 0 :(得分:0)

我对WCF的JSON解析基础架构背后的内部管道非常熟悉,基本上,处理第二种情况的管道实际上是为了支持“严格”标准投诉JSON。

巧合的是,第一种情况适用于不合规的JSON。不要读它。这不是一个有意识的设计决定。希望这可以解决困惑!

有关更多详细信息,您可以使用Reflector探索DataContractJsonSerializerOperationFormatter,DataContractJsonSerializerOperationBehavior和DataContractJsonSerializer。