向REST API中的序列化对象添加“标准”JSON字段
受此启发,我想在RESTAPI中插入一点自定义序列化逻辑。我正在使用WebAPI 2和JSON.NET。我的目标是将响应的“有效负载”包装在主JSON响应的“数据”字段中,如样式指南中所述,在每个响应中包括一个apiVersion字段,诸如此类。当然,控制器操作只返回直接的POCO,我想修改它们发送到其中的容器,而不是POCO本身,因此:向REST API中的序列化对象添加“标准”JSON字段,json,rest,asp.net-web-api,json.net,Json,Rest,Asp.net Web Api,Json.net,受此启发,我想在RESTAPI中插入一点自定义序列化逻辑。我正在使用WebAPI 2和JSON.NET。我的目标是将响应的“有效负载”包装在主JSON响应的“数据”字段中,如样式指南中所述,在每个响应中包括一个apiVersion字段,诸如此类。当然,控制器操作只返回直接的POCO,我想修改它们发送到其中的容器,而不是POCO本身,因此: { "id": "111", "apiVersion": "1.0", "data": { "kind": "monkey", "
{
"id": "111",
"apiVersion": "1.0",
"data": {
"kind": "monkey",
"name": "manny",
"age": "3"
},
"error": null
}
…这类事情。因此,我设想在每个响应通过连接之前插入少量的标准数据。实现这一目标的最佳方式是什么
TIA。我相信您可以使用ActionFilterAttribute来实现这种行为。您首先需要创建一个类来表示包装的响应。所有属性都是字符串,请根据需要进行调整:
public class WrappedJsonResponse
{
public string Id {get;set;}
public string ApiVersion {get;set;}
public object Data {get;set;}
public string Error {get;set;}
}
ActionFilterAttribute允许您在通过虚拟方法执行操作后执行一些处理:
使用该属性,您可以选择将其应用于需要整个控制器、仅操作或作为默认过滤器的位置
注意:我目前没有访问开发环境的权限,也没有测试过滤器。如果这还不完整,它至少应该给你一个如何完成的想法。我相信你可以使用ActionFilterAttribute来实现这种行为。您首先需要创建一个类来表示包装的响应。所有属性都是字符串,请根据需要进行调整:
public class WrappedJsonResponse
{
public string Id {get;set;}
public string ApiVersion {get;set;}
public object Data {get;set;}
public string Error {get;set;}
}
ActionFilterAttribute允许您在通过虚拟方法执行操作后执行一些处理:
使用该属性,您可以选择将其应用于需要整个控制器、仅操作或作为默认过滤器的位置
注意:我目前没有访问开发环境的权限,也没有测试过滤器。如果这还不完整,至少应该给你一个如何完成的想法。明白了。对于一个现成的解决方案,它是正确的标记!谢谢,就这样。对于一个现成的解决方案,它是正确的标记!谢谢