【发布时间】:2014-05-24 10:12:01
【问题描述】:
对不起,如果这里的其他地方已经回答了这个问题,我还没有找到它。我有有效的 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() 调用返回“数据”,例如success: function(data) { ,我想将每个嵌套数组分解为 localstorage 而无需知道它们的键名,因为我可能永远不知道它们。但事实上,我无法在我知道这些子数组名称的地方得到一些东西。这个:
for(var key in data){
localStorage.setItem(key, JSON.stringify(data[key]));
}
将创建一个“main”的本地存储实例。但是这个(和其他变体):
for(var key in data){
localStorage.setItem(key.Example1[0], JSON.stringify(data[key.Example1]));
}
返回错误“未捕获的类型错误:无法读取未定义的属性 '0'”。而且由于我无法使用已知的子数组键名来完成此操作,因此在抽象的匿名级别上执行此操作仍然更具挑战性。我怎样才能简单地输出恰好包含在“main”中的任何嵌套数组以分隔本地存储,而不必知道它们在 JSON 中的名称?感谢您的帮助。
【问题讨论】:
-
“Hole1Info”到底是从哪里来的?我的意思是,这在 JSON 中没有出现。
-
如果你知道有一个“main”键,为什么不直接做
for (var key in data.main)?? -
对,@Pointy,我很抱歉——我已经编辑了答案以删除该实例。对于您和 Felix Kling,我可能知道有一个名为“main”的超级数组,但不知道它包含的数组。我试图以一种完全匿名的方式找出“main”中包含的那些数组是什么,并将这些数组的内容输出到 localstorage,这是一种与 Felix 无可否认的关于嵌套数据结构的令人敬畏的规范答案不同的实现。
标签: javascript arrays json local-storage