将额外的 JSON 对象添加到 Web API 响应

Adding an extra JSON Object to the Web API Response

我需要将一个额外的 JSON 对象附加到由 Web API 方法生成的 JSON 响应。例如:

我现在的代码:

[Route("api/getcomnts")]
public IHttpActionResult GetCommentsForActivity(string actid)
{
       List<Comment> cmntList = CC.GetAllComments(actid);
       return Ok(cmntList);
}

如果成功检索到评论,我想发送:

"status":"success"

连同它已经作为JSON数组发送的评论列表。

"status":"fail"

如果评论列表为空。是否可以将这个名为 JSON 的额外 JSON 对象附加到我已经存在的方法中?

这对我的客户 Android 和 iOS 应用程序来说非常方便 :)

编辑

或者对于这样的场景:

    [HttpGet]
    [Route("api/registeruser")]
    public IHttpActionResult RegisterUser(string name, string email, string password)
    {

        int stat = opl.ConfirmSignup(name, email, password);
        string status = "";
        if (stat == 0)
        {
            status = "fail";
        }
        else
        {
            status = "success";
        }
        return Ok(status);
    }

您可以 return Web 匿名对象 API。

    [Route("api/getcomnts")]
    public IHttpActionResult GetCommentsForActivity(string actid)
    {
           List<Comment> cmntList = CC.GetAllComments(actid);
           var success = cmntList.Count() > 0 ? "success" : "success";
           return Ok(new { List = cmntList, success } );
    }

**EDIT:**

    [Route("api/getcomnts")]
    public IHttpActionResult GetCommentsForActivity(string actid)
    {
           List<Comment> cmntList = CC.GetAllComments(actid);
           string status = "";
           if(cmntList.Count()!=0)
           {
                status = "success";
           }
           else
           {
                status = "fail"; 
           }
           return Ok(new { List = cmntList, status } );
    }

你可以试试这个

public HttpResponseMessage Get(string actid)
    {
        //sample..
        if (value == true)
            return Request.CreateResponse(HttpStatusCode.OK, getStatus("success"), JsonMediaTypeFormatter.DefaultMediaType);
        else
            return Request.CreateResponse(HttpStatusCode.OK, getStatus("failed"), JsonMediaTypeFormatter.DefaultMediaType);
    }

    private object getStatus(string s)
    {
        var status = new { Status = s };
        return status;
    }