【发布时间】:2016-04-02 06:27:00
【问题描述】:
我想在我的 API 中提供以下 JSON:
{
"id": 1
"name": "Muhammad Rehan Saeed",
"phone": "123456789",
"address": {
"address": "Main Street",
"postCode": "AB1 2CD"
}
}
我想让客户端能够过滤掉他们不感兴趣的属性。以便以下 URL 返回 JSON 的子集:
`/api/contact/1?include=name,address.postcode
{
"name": "Muhammad Rehan Saeed",
"address": {
"postCode": "AB1 2CD"
}
}
在 ASP.NET Core 中实现此功能的最佳方法是:
- 该解决方案可以全局应用,也可以应用于单个控制器或过滤器等操作。
- 如果解决方案使用反射,那么还必须有一种方法来优化特定控制器操作,方法是提供一些代码以出于性能原因手动过滤出属性。
- 它应该支持 JSON,但支持 XML 等其他序列化格式会很好。
我找到了使用自定义 JSON.Net ContractResolver 的 this 解决方案。可以通过将合约解析器添加到 ASP.Net Core 使用的默认合约解析器或手动添加到像 this 代码示例这样的单个操作而不是控制器来全局应用合约解析器。此外,这是一个 JSON 特定的实现。
【问题讨论】:
-
这是一个可靠的链接,我发布的链接也有类似的功能。问题是,在 ASP.NET Core 中使用这些扩展方法的最佳方式是什么?此外,该解决方案解决了 JSON 的问题,但 XML 呢?
-
你应该开始考虑 GraphQL 来满足这个需求
标签: asp.net json json.net asp.net-core asp.net-core-1.0