WCF数据服务 - JSON响应具有额外的“结果”部分

时间:2012-04-25 16:14:49

标签: json wcf-data-services

使用WCF Data Services Toolkit或其他方式来支持$format param,例如JSONPSupportInspectorAttribute我得到的一些json回复对我来说有些奇怪。

为什么我的json看起来像:

{
"d" : {
"results": [
{
"__metadata": {

来自OData.org $format的json如下:

{
"d" : [
{
"__metadata": {

为什么我的额外“结果”子部分?

我的数据服务直接构建在我的实体框架模型上。我是否必须使用特定的上下文模板才能消失?

1 个答案:

答案 0 :(得分:2)

这是版本控制。在V2中,我们添加了服务器驱动的分页和内联计数功能,这些功能需要在Feed上存储其他元数据。但由于V1中的feed只是一个JSON数组,因此无法放置这样的元数据。

因此在V2中,响应中的所有提要都包含在“结果”包装中。这就是feed是一个JSON对象,它有一个名为“results”的属性,它有一个数组。 Feed对象上可能还有其他属性(下一个链接,计数......)。

有效负载的版本控制基于该有效负载中任何功能所需的最低版本。因此,如果您的服务使用的是需要高于V1的版本的有效负载,则整个有效负载将使用更高版本编写。

你甚至可以在o​​data.org服务上看到这一点 - 试试这个: http://services.odata.org/OData/OData.svc/Products $ inlinecount =所有页&安培; $格式= JSON

响应将为V2并将使用结果包装器。