Return json 来自网络 api 控制器
Return json from web api controller
我有网络 api 控制器:
[HttpPost]
public String UploadFile()
{//do some logic
String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}";
return jsResult;
}
返回给客户端的字符串是这样的:"{\"success\":\"false\",\"msg\":\"No file or user ID!\"}";
我手动编写了 json 字符串,但客户端不解析它(我猜是因为 returned 字符串用“\”转义了。
从这个控制器方法 return json 字符串到 clinet 的正确方法是什么?
尝试自动序列化 webapi:
创建模型:
public class UploadResult
{
public UploadResult()
{
}
public bool Success { get; set; }
public string Msg { get; set; }
}
和return
public UploadResult UploadFile()
{
var r = new UploadResult(){ Success = false, Msg = "No file or user ID!" };
return r;
}
在您的示例中,您显式地进行了序列化,结果最终序列化了两次。因为 WebApi 已经在管道中有 Json 序列化器。
要异步:
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
失败,因为
[System.Web.Http.HttpPost] != [System.Web.Mvc.HttpPost]
并且[HttpPost]有歧义。无论如何,不需要 Mvc 引用。删除它并重新添加 [HttpPost]
试试这个:
[HttpPost]
public JsonResult UploadFile()
{//do some logic
String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}";
return Json(jsResult);
}
我已将 return 类型更改为 JsonResult 并使用 Json 方法格式化您的结果。
我有网络 api 控制器:
[HttpPost]
public String UploadFile()
{//do some logic
String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}";
return jsResult;
}
返回给客户端的字符串是这样的:"{\"success\":\"false\",\"msg\":\"No file or user ID!\"}";
我手动编写了 json 字符串,但客户端不解析它(我猜是因为 returned 字符串用“\”转义了。 从这个控制器方法 return json 字符串到 clinet 的正确方法是什么?
尝试自动序列化 webapi:
创建模型:
public class UploadResult
{
public UploadResult()
{
}
public bool Success { get; set; }
public string Msg { get; set; }
}
和return
public UploadResult UploadFile()
{
var r = new UploadResult(){ Success = false, Msg = "No file or user ID!" };
return r;
}
在您的示例中,您显式地进行了序列化,结果最终序列化了两次。因为 WebApi 已经在管道中有 Json 序列化器。
要异步:
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
失败,因为
[System.Web.Http.HttpPost] != [System.Web.Mvc.HttpPost]
并且[HttpPost]有歧义。无论如何,不需要 Mvc 引用。删除它并重新添加 [HttpPost]
试试这个:
[HttpPost]
public JsonResult UploadFile()
{//do some logic
String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}";
return Json(jsResult);
}
我已将 return 类型更改为 JsonResult 并使用 Json 方法格式化您的结果。