Javascript 如何从JSON对象中的键获取值?
我想打印JSON对象的所有键值对。 我不知道对象的键,所以我尝试在循环中获取所有键和相应的值。 但我似乎遗漏了一些显而易见的东西 我的perl代码Javascript 如何从JSON对象中的键获取值?,javascript,json,parsing,object,Javascript,Json,Parsing,Object,我想打印JSON对象的所有键值对。 我不知道对象的键,所以我尝试在循环中获取所有键和相应的值。 但我似乎遗漏了一些显而易见的东西 我的perl代码 %some_data = ("key1" => "value1","key2" => "value2","key3" => "value3","key4" => "value4"); my $json = encode_json \%some_data; print $json; # it prints {"key2"
%some_data = ("key1" => "value1","key2" => "value2","key3" => "value3","key4" => "value4");
my $json = encode_json \%some_data;
print $json; # it prints {"key2":"value2","key4":"value4","key1":"value1","key3":"value3"}
我的简单javascript代码
var jsonObj=$json;
var keys= Object.keys(jsonObj);
for (var i = 0; i < keys.length; i++){
document.write("<br /> ");
document.write(keys[i]);
// document.write(jsonObj.[keys[i]]); # doesnt work
}
document.write(jsonObj.key1); #works
var jsonObj=$json;
var keys=Object.keys(jsonObj);
对于(var i=0;i ”);
文件编写(键[i]);
//document.write(jsonObj.[key[i]]);#不起作用
}
document.write(jsonObj.key1)#作品
您的“不工作”行应该是:
document.write(jsonObj[keys[i]]);
^--- no "."
您无法通过执行
jsonObj.[keys[i]]
来检索与JavaScript对象键关联的值。您应该将该行改为jsonObj[keys[i]]
。点表示法仅适用于对象中存在的键。由于[keys[i]]
实际上不是该对象的属性,因此不能使用点表示法,而必须使用方括号表示法。在尝试调用document.write()
时,将方括号表示法(jsonObj[keys[i]])和点表示法(jsonObj.key1)结合起来;它们彼此等效,因此您应该只使用其中一个。在这种情况下,由于键是动态的,因此只应使用方括号表示法:
document.write(jsonObj[keys[i]]);
只需使用for..in
循环对象即可:
for (var key in jsonObj) {
document.write(key);
document.write(jsonObj[key]);
}