使C#MVC控制器响应JSON的最佳方法是什么?

时间:2016-05-13 21:01:59

标签: c# json asp.net-mvc asp.net-core-1.0

我处于严重的困境中。我用什么样的服务将对象转换为JSON?

Frist情景:

我使用的是Microsoft的序列化程序,代码将是这样的:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public JsonResult Get(string param)
    {
        return Json(result);
    }

第二种情况:

我使用Newtonsoft,示例代码:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public string Get(string param)
    {
        return JsonConvert.SerializeObject(result);
    }

我该怎么办?谁更好,更安全或更快?

我尝试在文档中找到响应,但我仍有疑问。

2 个答案:

答案 0 :(得分:1)

之前的回答者提出了一个很好的观点,但我可以根据我解决问题的方式提供答案。

在我的控制器中,我有一个实际在文件中查找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();
    }

答案 1 :(得分:1)

框架的JsonResult在99%的时间都是合适的。已经证明JSON.NET更快,但序列化不是典型的瓶颈。所以,除非你需要JSON.NET坚持默认。顺便说一句,你的第二个场景不会返回application/json内容,而是text/html