[ASP.net MVC] 解決InvalidOperationException: 使用 JSON JavaScriptSerializer 序列化或還原序列化期間發生錯誤。字串的長度超過在 maxJsonLength 屬性上設定的值。

[ASP.net MVC] 解決InvalidOperationException: 使用 JSON JavaScriptSerializer 序列化或還原序列化期間發生錯誤。字串的長度超過在 maxJsonLength 屬性上設定的值。

會發生這樣錯誤是因為預設ASP.net MVC的Action裡return Json(data,JsonRequestBehavior.AllowGet);

使用的JavaScriptSerializer有序列化字串長度上限

解決方法兩種:

第1種. 先引用命名空間:using Newtonsoft.Json;

原本的return Json();改為用JsonConvert來回傳Json字串

※JsonConvert效能較佳,且沒有字串長度上限

return Content(JsonConvert.SerializeObject(yourObject, Formatting.Indented,
               new JsonSerializerSettings
               {   //視自己需求可以拿掉
                   ReferenceLoopHandling = ReferenceLoopHandling.Ignore 
               }), "application/json");
            

第2種:為回傳的JsonResult設定字串長度上限

原本return Json();改為return new JsonResult();

        return new JsonResult()
        {
          Data = yourObject,
          MaxJsonLength = int.MaxValue,/*重點在這行*/
          JsonRequestBehavior = JsonRequestBehavior.AllowGet
        };