Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从JSON对象中的键获取值?_Javascript_Json_Parsing_Object - Fatal编程技术网

Javascript 如何从JSON对象中的键获取值?

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"

我想打印JSON对象的所有键值对。 我不知道对象的键,所以我尝试在循环中获取所有键和相应的值。 但我似乎遗漏了一些显而易见的东西

我的perl代码

%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]);  
}