2015-09-03 75 views
3

我有网页API控制器:从网页API控制器返回JSON

[HttpPost] 
    public String UploadFile() 
    {//do some logic 
     String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}"; 
     return jsResult; 
    } 

返回的字符串到客户端是这样的: “{\” 成功\ “:\” 假\”,\ “MSG \” :\“没有文件或用户ID!\”}“;

我手动编写JSON字符串,但客户端不解析它(我猜是因为返回的字符串用“\”转义。 什么将JSON字符串从这个控制器方法返回到客户为例的正确方法?

回答

3

尝试自动序列化的WebAPI:

创建模型:

public class UploadResult 
{ 
    public UploadResult() 
    { 

    } 
    public bool Success { get; set; } 
    public string Msg { get; set; } 
} 

,并返回

public UploadResult UploadFile() 
{ 
    var r = new UploadResult(){ Success = false, Msg = "No file or user ID!" }; 
    return r; 
} 

在你的例子中,你明确地序列化了,并且结果连续两次。因为WebApi已经有了Json串行器。

要进入异步:因为

[System.Web.Http.HttpPost] != [System.Web.Mvc.HttpPost] 

而且[HttpPost]是模糊的

public async Task<IHttpActionResult> UploadFile() 
{ 
    var r = new UploadResult(){ Success = false, Msg = "No file or user ID!" }; 
    // some "await" logic 
    return Ok(r); 
} 

添加using System.Web.Mvc失败。无论如何,Mvc ref是没有必要的。删除它,再添加[HttpPost]

+0

我有ApiController: 公共类ImportReservationController:ApiController 它没有JsonResult选项。 如果我添加引用(使用System.Web.Mvc;)然后我可以编写JsonResult,但[HttpPost]不起作用。 我猜API控制器不支持JsonResult。 – Simon

+0

它现在有效。你可以用几个词来解释我,因为我是web api的新手。为什么如果我添加引用MVC停止工作? [HttpPost]不再可用。谢谢。 – Simon

+0

@Simon更新! – Mate

0

试试这个:

[HttpPost] 
public JsonResult UploadFile() 
{//do some logic 
    String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}"; 
    return Json(jsResult); 
} 

我已经改变了返回类型JsonResult和使用JSON的方法来格式化你的结果。