Javascript 名称未知时查找和存储JSON嵌套数组

Javascript 名称未知时查找和存储JSON嵌套数组,javascript,arrays,json,local-storage,Javascript,Arrays,Json,Local Storage,很抱歉,如果这里的其他地方已经回答了这个问题,如果已经回答了,我还没有找到。我有有效的JSON: { "main": [ { "Example1": [ { "Example1_Var02": "5", "Example1_Var09": "443", "Example1_Var27": "23",

很抱歉,如果这里的其他地方已经回答了这个问题,如果已经回答了,我还没有找到。我有有效的JSON:

{
    "main": [
        {
            "Example1": [
                {
                    "Example1_Var02": "5",
                    "Example1_Var09": "443",
                    "Example1_Var27": "23",
                    "Example1_Var01": "31"
                }
            ],
            "Example2": [
                {
                    "Example2_Var99": "2",
                    "Example2_Var84": "344",
                    "Example2_Var46": "56",
                    "Example2_Var03": "78"
                }
            ]
        }
    ]
}
其名称我不知道和/或将定期更改,除了“main”的超级键。假设成功调用
$.ajax()
并返回“数据”,例如
成功:函数(数据){
,我想将每个嵌套数组分解到localstorage中,而不需要知道它们的键名,因为我可能永远也不知道它们。但事实上,我无法在我知道这些子数组名的情况下获得一些有用的内容。这:

for(var key in data){
   localStorage.setItem(key, JSON.stringify(data[key]));
}
将创建一个“main”的localstorage实例。但这(以及其他变体):


返回错误“Uncaught TypeError:无法读取未定义的属性“0”。由于我无法使用已知的子数组键名完成此操作,因此在抽象、匿名级别执行此操作更具挑战性。如何简单地输出“main”中包含的任何嵌套数组要在不一定知道JSON中的名称的情况下分离本地存储?谢谢您的帮助。

正如@Pointy所指出的,如果您总是希望main在那里,并且对象的结构是可预测的(即使名称和数据不是),您可以使用
for…in
语句在对象上迭代:

for(var outer in x.main){ 
    for(var inner_key in x.main[outer]){ 
        localStorage.setItem(inner_key, JSON.stringify(x.main[outer][inner_key]));

    }
}

console.log(localStorage.getItem('Example1'));
// "[{"Example1_Var02":"5","Example1_Var09":"443","Example1_Var27":"23","Example1_Var01":"31"}]"

“Hole1Info”是从哪里来的?我的意思是,它在JSON中没有出现过。另外,如果你知道有一个键“main”,为什么不直接执行
for(var key in data.main)
?@Pointy,很抱歉,您可能是对的,我已经编辑了答案以删除该实例。对于您和Felix Kling,我可能知道有一个名为“main”的超级数组,但不知道它包含的数组。我正试图以完全匿名的方式找出“main”中包含的数组并将这些数组输出到localstorage,这是一个不同的实现,与Felix关于嵌套数据结构的无可否认的经典答案不同。这绝对是我想要的——我在处理对象时对这些语法的知识非常有限,因此非常感谢我能得到的任何帮助。谢谢,Rob!
for(var outer in x.main){ 
    for(var inner_key in x.main[outer]){ 
        localStorage.setItem(inner_key, JSON.stringify(x.main[outer][inner_key]));

    }
}

console.log(localStorage.getItem('Example1'));
// "[{"Example1_Var02":"5","Example1_Var09":"443","Example1_Var27":"23","Example1_Var01":"31"}]"