欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值

使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值

2024/12/22 0:07:21 来源:https://blog.csdn.net/run__ning/article/details/144450740  浏览:    关键词:使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值

问题:使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值

在这里插入图片描述

分析:

意味着你尝试处理的 JSON 字符串超过了 JavaScriptSerializer 默认的最大长度限制。默认限制,JavaScriptSerializer 类的 MaxJsonLength 属性默认设置为 2097152 字节(即 2MB)。这意味着如果你尝试序列化或反序列化超过这个大小的 JSON 数据,就会抛出异常。

解决方案

1、增加 MaxJsonLength 的值:

using System.Web.Script.Serialization;var jsonResult="";//你要返回的参数
var seriializer = new JavaScriptSerializer();
seriializer.MaxJsonLength = Int32.MaxValue;// 或者设置为一个合理的更高值
var result = new ContentResult
{Content = seriializer.Serialize(jsonResult),ContentType = "application/json"
};return result;

2、使用Newtonsoft.Json序列化库

using Newtonsoft.Json;var jsonString = JsonConvert.SerializeObject(yourObject);
// 或者
var Obj = JsonConvert.DeserializeObject<T>(jsonString);

或者自定义

JsonSerializerSettings settings = new JsonSerializerSettings
{MaxDepth = 100, // 可以根据需要设置MaxJsonLength = int.MaxValue // 或者设置为一个合理的更高值
};string jsonString = JsonConvert.SerializeObject(yourObject, settings);

3、对返回的参数进行分页返回

int rows = Convert.ToInt32(Request["rows"] ?? "20");//条数
int page = Convert.ToInt32(Request["page"] ?? "1");//页码int numF = (page - 1) * rows ;int numT = page * rows;var data = new PreContainerGoodsBll().GetShipmentEntrustmentList(SED_STARTDATE, SED_ENDDATE, SED_CST_ID, SED_STATUS, SED_NUM, SED_PDI_NAME, SED_EPT_ID, SED_TYPE1, SED_TYPE2,  SED_TYPE,  PER_TRK_TRKNO);//要返回的参数var pagedData = data.Skip(numF) // 跳过前面的(pageNumber - 1) * pageSize个元素.Take(numT) // 取接下来的pageSize个元素.ToList(); // 将结果转换为列表var jsonResult = new { total = data.Count<SHIPMENT_ENTRUSTMENTModel>(), rows = pagedData };return Json(jsonResult, JsonRequestBehavior.AllowGet);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com