Ajax将json作为对象数组返回。从某些MAGIC数量的对象开始,它无法输出

时间:2012-03-19 18:21:42

标签: ajax json

我有ASP.NET页面,它通过$ .ajax调用webservice并以json格式返回结果。

json数据是一组对象,每个对象都是具有自己属性的实体,例如:

StorageEntity
{
 Capacity,
 Name,
 NameLink,
 RelatedEntityName,
 RelatedEntityNameLink,
 etc..
}

问题在于一些该死的神奇数字:

当结果中的实体数量为2622时 - 似乎无关紧要有多少属性包含StorageEntity - ajax响应失败!

起初我认为数据总量太大了。所以我减少了一些冗长的链接属性的格式。这样我将结果数据量减少了20%。但是,幻数没有改变!!

仅供参考:stringify-ed结果json的长度为5MB,优化后大约为4MB。 我知道它太多了,并会考虑它。

但是,请解释一下 - 为什么它没有帮助,仍然有2622条记录没有输出(2621没问题),无论数据的总量是多少?

P.S。我尝试了各种各样的东西,比如maxJsonLength,特别是MaxJsonDeserializerMembers - 没有什么帮助......

1 个答案:

答案 0 :(得分:0)

我终于发现,删除任何属性(不减少其文本表示)正在解决问题。但是我不想失去我的任何财产,所以...

解决方案是数据协定序列化程序的maxItemsInObjectGraph参数。

你只需要添加这个

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="">
                 <dataContractSerializer maxItemsInObjectGraph="307200"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

进入您网站的网络配置。 我的实体有很多属性,这个数字乘以记录数量似乎大于默认设置的64K。