使 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