首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在复杂的JSON处理过程中"RangeError:超过最大调用堆栈大小“

在复杂的JSON处理过程中"RangeError:超过最大调用堆栈大小“
EN

Stack Overflow用户
提问于 2016-02-01 13:42:05
回答 1查看 1.6K关注 0票数 2

我正在处理报表页,它必须处理一个大的JSON对象。这个JSON对象可能至少包含500到600个内部JSON对象。我必须迭代它们,并在我的报告页中显示它们。

在JSON迭代期间,我将进入浏览器:

RangeError:超过最大调用堆栈大小

您知道如何在客户端处理这个大JSON对象吗?有没有为我做的和不做的?

目前,我正在将我的大JSON对象拆分成更小的JSON对象,不确定这种方法是否会产生所需的结果

更新:

在下面的递归nested方法中,我得到了错误。在发送任何值之前,我已经缩小了JSON的大小。value1是我减少的JSON对象(它至少有100个JSON对象)。

代码语言:javascript
运行
复制
function nested(value1) {
    var final1 = {};

    var Keys1 = Object.keys(value1);
    if (angular.equals(Keys1, $scope.Headers)) {
        return final1;
    } else {
        angular.forEach(value1, function(value, key) {
            final1[key] = {};  // Getting the error in this line
            final1[key] = nested(value);
        });
    }

    return final1;
}

编辑:我已经获取了JSON对象的骨架。在下面的JSON对象中,每个级别可以有50个JSON对象,级别可以扩展到10个。

代码语言:javascript
运行
复制
"First": {
    "second-1": {
        "level3": {
            "data1": {
                "Key1": "val1",
            },
            "data2": {
                "Key2": "",
            },
            "dat3": {
                "Key3": "",
            }
        },
        "second-2": {
            "Level3": {
                "Level4": {
                    "data1": {
                        "Key1": ""
                    },
                    "data2": {
                        "Key1": ""
                    }
                },
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-01 15:49:41

我猜这个问题与JSON的大小或复杂性无关,这个问题是由于结构糟糕的递归函数造成的。

首先,这里真的需要递归吗?JSON嵌套的深度有多深?如果只有几个层次深,我建议使用简单的条件逻辑来提取您的值,如果其子值存在而不是递归。

第二,如果坚持递归,我不建议在函数中使用$scope变量。我会将其重构为一个方法参数,以便您在执行每个函数时确切地知道它是什么。

第三(可能是无限循环的原因),递归函数没有明确的终止状态。您的函数一直在挖掘对象递归的键,直到这个条件变为真为止。

angular.equals(Keys1, $scope.Headers)

Object.keys()返回一个字符串数组,因此$scope.Headers必须与此数组完全匹配,才能使该语句返回true。这意味着$scope.Headers必须是一个数组,具有完全相同的字符串数和相同的顺序。似乎不太可能所有子节点都具有适当终止的这一特性。

如果您想发布一个json示例,您想要解析它,以及您希望如何访问它的数据,那么我们可能可以帮助您制定一个更好的解析解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35132033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档