如何为返回类型为void的方法返回一个空的JSON对象?

时间:2013-12-05 13:55:53

标签: serialization servicestack void servicestack-text servicestack-bsd

要求:

当我的ServiceStack服务方法的返回类型为{}时,我正在寻找一种返回空JSON对象(例如void)的方法。

推理:

想要为void类型返回空JSON对象的原因是由于jQuery处理内容类型application/json的方式。当discussed here jQuery在收到没有内容的200 - OK状态时会抛出错误。这是当前为void返回的内容。

预见问题:

我希望有一种简单的方法可以将void序列化为{}

  • 如果可能的话,这样会有不良后果吗?
  • 当它期望void时,它是否会影响ServiceStack c#客户端?

1 个答案:

答案 0 :(得分:1)

我发现简单的解决方案是覆盖自定义ServiceStack OnAfterExecute中的ServiceRunner方法。

如果没有响应(因为方法返回void)且ContentTypeapplication/json,则发送一个空对象。

public override object OnAfterExecute(IRequestContext requestContext, object response)
{
    if(response == null && requestContext.ContentType == "application/json")
        response = new {};

    return base.OnAfterExecute(requestContext, response);
}