使 C# MVC 控制器响应 JSON 的最佳方法是什么?
What is the best way to make a C# MVC Controller responde a JSON?
我陷入了严重的困境。我使用什么样的服务将对象转换为 JSON?
第一个场景:
我用的是微软的serializer,代码是这样的:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Get(string param)
{
return Json(result);
}
第二种情况:
我用的是Newtonsoft,示例代码:
[HttpPost]
[ValidateAntiForgeryToken]
public string Get(string param)
{
return JsonConvert.SerializeObject(result);
}
我该怎么办?谁更好、更安全或更快?
我试图在文档中找到响应,但我仍然有疑问。
之前的回答者说得很好,但我可以根据我处理问题的方式提供答案。
在我的控制器中,我有一个 route/function,它实际上在文件中查找 json,但您也可以使用 Newtonsoft nuget 包代码序列化一个对象。
public ActionResult XData(string id)
{
string dir = WebConfigurationManager.AppSettings["X_Path"];
//search for the file
if (Directory.Exists(dir) && System.IO.File.Exists(Path.Combine(dir, id, "X.json")))
{
//read the file
string contents = System.IO.File.ReadAllText(Path.Combine(dir, id, "X.json"));
//return contents of the file as json
return Content(contents, "application/json");
}
return new HttpNotFoundResult();
}
框架的 JsonResult
在 99% 的情况下都是合适的。已经表明 JSON.NET 速度更快,但序列化不是您的典型瓶颈。所以除非你需要 JSON.NET 坚持使用默认值。顺便说一下,你的第二个场景没有 return application/json
内容,而是 text/html
。
我陷入了严重的困境。我使用什么样的服务将对象转换为 JSON?
第一个场景:
我用的是微软的serializer,代码是这样的:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Get(string param)
{
return Json(result);
}
第二种情况:
我用的是Newtonsoft,示例代码:
[HttpPost]
[ValidateAntiForgeryToken]
public string Get(string param)
{
return JsonConvert.SerializeObject(result);
}
我该怎么办?谁更好、更安全或更快?
我试图在文档中找到响应,但我仍然有疑问。
之前的回答者说得很好,但我可以根据我处理问题的方式提供答案。
在我的控制器中,我有一个 route/function,它实际上在文件中查找 json,但您也可以使用 Newtonsoft nuget 包代码序列化一个对象。
public ActionResult XData(string id)
{
string dir = WebConfigurationManager.AppSettings["X_Path"];
//search for the file
if (Directory.Exists(dir) && System.IO.File.Exists(Path.Combine(dir, id, "X.json")))
{
//read the file
string contents = System.IO.File.ReadAllText(Path.Combine(dir, id, "X.json"));
//return contents of the file as json
return Content(contents, "application/json");
}
return new HttpNotFoundResult();
}
框架的 JsonResult
在 99% 的情况下都是合适的。已经表明 JSON.NET 速度更快,但序列化不是您的典型瓶颈。所以除非你需要 JSON.NET 坚持使用默认值。顺便说一下,你的第二个场景没有 return application/json
内容,而是 text/html
。