如何在OData中排除节点

时间:2015-03-30 08:46:42

标签: json odata

我有一个如下的Odata响应结构,

{
"value": [{
    "a": "10",
    "b": "10",
    "c": "10",
    "Description": null,
    "ExtendedValues": [{
        "x1": "val1",
        "y1": "val2",
        "z1": "val3"
    },
    {
        "x2": "val1",
        "y2": "val2",
        "z2": "val3"
    },
    {
        "x3": "val1",
        "y3": "val2",
        "z3": "val3"
    },
    ],
}]

}

我只想知道是否有办法从响应中排除特定节点。对于ex,我需要从响应中排除ExtendedValues。虽然我可以通过使用$ select并提供所有必需的属性来实现。

1 个答案:

答案 0 :(得分:1)

有几种方法可以这样做:

1在ConventionModelBuilder中使用IgnoreDataMember。在WebApiConfig.cs文件

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<Person>().Ignore(p => p.Description);

然后将排除属性Description,但它也将在$ metadata

中消失

2您可以通过定义未绑定的函数来返回您喜欢的值,从而使这样的事情发挥作用。请参阅sample

3如果你有很多业务逻辑,你可以尝试RESTier - 一个基于Web API OData构建的框架,使业务逻辑易于实现。在http://odata.github.io/RESTier/可以看到更多内容。您可以按照入门2,实体集过滤器的教程进行操作。但目前,RESTier仍然是预览版。