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

时间:2015-07-20 08:00:06

标签: asp.net json azure asp.net-web-api azure-mobile-services

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

我的代码现在:

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

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

  

“状态”: “成功”

以及已作为JSON数组发送的评论列表。

  

“状态”: “失败”

如果评论列表是EMPTY。是否可以将这个名为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);
    }

2 个答案:

答案 0 :(得分:2)

您可以使用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 } );
    }

答案 1 :(得分:0)

你可以试试这个

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;
    }