使用JSON JavaScriptSerializer进行序列化或反序列化时出现错误。

15

使用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);
    }

1个回答

31
我假设你正在从一个Web服务获取数据(因为你的问题标记为“web-service”),请在web.config文件中更改maxlength。

我假设你正在从一个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);

@DenishParvadia 没关系,如果有帮助,请不要忘记将其标记为答案 :) - Zaki
1
如果您想在 maxJsonLength 中硬编码最大 int 值,则为 2147483644 - Chad Kuehn
serializer.MaxJsonLength = Int32.MaxValue;这行代码对我很有帮助!谢谢 @zaki - Aimal Khan
当我向控制器请求具有700个以上长度数组列表的POST时,我会收到这个错误。 - SPnL
1
@Zaki 这是一篇旧帖子,我知道。但在我的asp.net web应用程序中,我遇到了这个问题。我尝试了两种方法,但我的应用程序告诉我“使用JSON JavaScriptSerializer进行序列化或反序列化时出错”。 - mmangual83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接