使用 JSON JavaScriptSerializer 进行序列化或反序列化期间出错

本文关键字:反序列化 出错 序列化 JSON JavaScriptSerializer 使用 | 更新日期: 2023-09-27 18:30:31

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

public string MemberDetail(string Code)
    {
        String res = "";
        SortedList sd = new SortedList();
        sd.Add("@mode", "MemberDetail");
        sd.Add("@Code", Code);
        SqlDataReader dr = erp.GetDataReaderSP("[Demo]", sd);
        DataTable dt = new DataTable();
        dt.Load(dr);
        Synchr[] obj = new Synchr[dt.Rows.Count];
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                obj[i].DemoName = Convert.ToInt32(dt.Rows[i]["Name"].ToString());
            }
        }
        return new JavaScriptSerializer().Serialize(obj);
    }

使用 JSON JavaScriptSerializer 进行序列化或反序列化期间出错

我假设它是您从中获取数据的Web服务(因为您的问题被标记为"Web-service"),请在web.config中更改maxlength:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

或者你可以试试 JavaScriptSerializer 的 MaxJsonLength :

JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue; 
myObject obj = serializer.Deserialize<yourObject>(yourJsonString);