【问题标题】:Error during serialization or deserialization using the JSON JavaScriptSerializer.使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。
【发布时间】:2015-01-11 14:52:01
【问题描述】:

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

【问题讨论】:

标签: c# asp.net web-services


【解决方案1】:

我假设它是您从中获取数据的网络服务(因为您的问题被标记为“网络服务”),请在 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 欢迎您,如果有帮助,请不要忘记将其标记为答案 :)
  • 如果你想硬编码maxJsonLength中的最大int值,它是2147483644
  • serializer.MaxJsonLength = Int32.MaxValue;这条线对我有用!谢谢@zaki
  • 当请求将长度为 700 及以上的数组列表发布到控制器时出现此错误。
  • @Zaki 这是我知道的旧帖子。但在我的 asp.net web 应用程序中,我遇到了这个问题。我尝试了这两种方法,我的应用程序告诉我“使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错”
猜你喜欢
  • 2021-09-02
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多