1

使用WCF Data Services Toolkit或其他支持$format参数的方法,例如JSONPSupportInspectorAttribute我得到一些对我来说有点奇怪的 json 响应。

为什么我的 json 看起来像:

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

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

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

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

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

4

1 回答 1

2

这是版本控制。在 V2 中,我们添加了服务器驱动的分页和内联计数功能,这些功能需要在提要上存储额外的元数据。但由于 V1 中的提要只是一个 JSON 数组,因此没有地方放置此类元数据。

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

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

您甚至可以在 odata.org 服务上看到这一点 - 试试这个: http : //services.odata.org/OData/OData.svc/Products ?$inlinecount=allpages&$format=json

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

于 2012-04-25T17:50:32.007 回答