IHttpActionResult返回Json对象

时间:2014-11-27 07:35:13

标签: json asp.net-mvc-4 asp.net-web-api

我在mvc api中创建了一个返回字符串的方法。但是,我想返回string而不是返回Json Object。这是我的代码。

    [AllowAnonymous]
    [HttpPost]
    [Route("resetpassword")]
    public IHttpActionResult ResetPassword(string email)
    {
        CreateUserAppService();
        string newPassword =_userAppService.ResetPassword(email);

        string subject = "Reset password";
        string body = @"We have processed your request for password reset.<br/><br/>";
        string from = ConfigurationManager.AppSettings[Common.Constants.FromEmailDisplayNameKey];
        body = string.Format(body, newPassword, from);

        SendEmail(email, subject, body, string.Empty);
        return Ok<string>(newPassword);
    }

此处返回Ok<string>(newPassword);现在我想返回Json object。如何返回 Json对象

4 个答案:

答案 0 :(得分:11)

试试:

[AllowAnonymous]
[HttpPost]
[Route("resetpassword")]
public IHttpActionResult ResetPassword(string email)
{
    //...
    return Json(newPassword);
}

答案 1 :(得分:7)

你实际上已经在使用关键的东西......

[HttpGet]
public IHttpActionResult Test()
{
     return Ok(new {Password = "1234"});
}

答案 2 :(得分:5)

您需要将其作为CLR对象返回,以便Web API将其序列化为JSON,您可以创建自己的POCO类或者这样做:

 var passResponse =  new
              {
                  newPassword= yourNewPassword
              };

但从安全的角度来看,你正在做的事情是不正确的,你应该从不通过电子邮件发送普通密码,你应该重置用户密码,为他们提供一个重置电子邮件链接到你的门户网站,并带有一些令牌和他们应该输入新密码。你在这里做的事情并不安全。

答案 3 :(得分:1)

创建一个返回对象。

public class PasswordResponse{
    public string Password {get;set;}
    //...other stuff to pass...
}

然后在您的回复中返回该类型的实例。

return OK(new PasswordResponse(){Password = newPassword});