我有一个简单的Get方法从文件返回json(用于测试目的):
public IHttpActionResult GetJson()
var json = "{ }";
string fn = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/test1.json");
if (System.IO.File.Exists(fn))
json = System.IO.File.ReadAllText(fn);
return Ok<string>(json);
然而,IHttpActionResult函数&#34; Ok&#34;似乎尝试序列化json,即使它已经是我想要返回它的格式,这使得响应包含中断字符,如:
{\r\n \"id\": \"\",\r\n \"name\": null,\r\n \"time\": null,\r\n}
是否有IHttpActionResult的内置实现,它返回一个json字符串而不尝试序列化它?
答案 0 :(得分:0)
由于您已经拥有string
,因此您应该能够做到:
public IHttpActionResult GetJson()
{
return Json("...");
}
阅读Ok
后,它确实显示以下内容:
协商和格式化整个正文的内容值。
所以即使File.ReadAllText
不包含回车符和换行符,我也认为它仍然保留格式。这就是Ok
结果尝试序列化结果的原因。
答案 1 :(得分:0)
似乎最简单的解决方案是先将JSON字符串反序列化为对象,然后将其返回:
var json_obj = JsonConvert.DeserializeObject(json);
return Json(json_obj);