从JSON在Javascript中创建动态关联数组
听起来比实际情况复杂得多 因此,在Perl中,您可以执行如下操作:从JSON在Javascript中创建动态关联数组,javascript,jquery,json,Javascript,Jquery,Json,听起来比实际情况复杂得多 因此,在Perl中,您可以执行如下操作: foreach my $var (@vars) { $hash_table{$var->{'id'}} = $var->{'data'}; } 我有一个JSON对象,我想做同样的事情,但是在jQuery中有一个javascript关联数组 我尝试了以下方法: hash_table = new Array(); $.each(data.results), function(name, result) {
foreach my $var (@vars) {
$hash_table{$var->{'id'}} = $var->{'data'};
}
我有一个JSON对象,我想做同样的事情,但是在jQuery中有一个javascript关联数组
我尝试了以下方法:
hash_table = new Array();
$.each(data.results), function(name, result) {
hash_table[result.(name).extra_info.a] = result.(name).some_dataset;
});
其中数据是从$.getJSON调用获取的JSON对象。它看起来或多或少是这样的(对不起,我的JSON语法可能有点不正确):
但每次我这样做,firebug都会抛出以下错误:
“XML筛选器应用于非XML数据”为什么要将一个数组更改为另一个数组?-)
--为什么不直接访问数据呢?如果要简化或过滤,可以直接遍历对象的数组 这是有效的。只需将其转储到脚本块中进行测试
d = {
'results':{
'datasets_a':{
'dataset_one':{
'data':{
'sample':'hello'
},
'extra_info':{
//stuff
}
},
'dataset_two':{
///
}
///
},
'datasets_b':{
///
}
}
}
alert(d.results.datasets_a.dataset_one.data.sample)
我希望这个粘贴正确。这个编辑器不喜欢我的代码换行
d = {
'results':{
'datasets_a':{
'dataset_one':{
'data':{
'sample':'hello'
},
'extra_info':{
//stuff
}
},
'dataset_two':{
///
}
///
},
'datasets_b':{
///
}
}
};
alert(d.results.datasets_a.dataset_one.data.sample)
我认为可以将JSON响应用作关联数组。因此,您应该能够直接进入并使用JSON 假设您收到上述示例:
$('result').innerHTML = data['results']['dataset_a']['dataset_two']['data'];
// Or the shorter form:
$('result').innerHTML = data.results.dataset_a.dataset_two.data;
请理解,我还没有测试过这一点,但是使用方括号和变量比使用圆括号加上点访问器的名称更安全
你的例子失败了,因为我刚刚发现了一些复杂的逻辑
$.each(data.results), function(name, result) {
hash_table[result.(name).extra_info.a] = result.(name).some_dataset;
});
现在,foreach循环遍历变量data.results
,以查找深度为1的内部元素。它找到的项将与项的键一起提供给lambda。AKA,第一个结果将是name=“datasets\u a”item=object
。跟踪我到现在?现在,您可以访问返回的散列,即项
中的对象,就好像它在名称
中有子键一样。。。“数据集”。但是,等等,这就是对象
如果其他一切都失败了。。。将结果JSON动态写入文本字段,并确保其格式正确。在上一个代码块中,它应该是函数(名称、结果)。name是键,result是键的值。我接受了第一部分,因为我可以直接访问json对象。我真傻,一开始就没有意识到。好吧,在MooTools中,它是反向的,所以我习惯了这个模型。+1告诉我
data['results']['dataset_a']['dataset_two']['data']代码>调用json对象的方式。方括号是可以在数组上使用的访问器arr=[1];arr[0]
和objectsobj={foo:'hello world'};obj['foo'];x=‘foo’;obj[x]
$.each(data.results), function(name, result) {
hash_table[result.(name).extra_info.a] = result.(name).some_dataset;
});