Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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转换为HTML:uncaughtTypeError:JSON.forEach不是函数_Javascript_Jquery_Json - Fatal编程技术网

Javascript 将JSON转换为HTML:uncaughtTypeError:JSON.forEach不是函数

Javascript 将JSON转换为HTML:uncaughtTypeError:JSON.forEach不是函数,javascript,jquery,json,Javascript,Jquery,Json,我想将JSON转换为HTML以在网站上显示它。我在谷歌上搜索过,当json是一个字符串时,会出现这个错误,首先我需要解析。但是当我使用JSON.parse时,控制台会说它已经是一个对象(JSON中位于位置1的意外标记o) $(文档).ready(函数(){ $(“#getMessage”)。在(“单击”,函数()上){   $.getJSON(“http://quotes.rest/qod.json,函数(json){ var html=“”; forEach(函数(val){ var keys

我想将JSON转换为HTML以在网站上显示它。我在谷歌上搜索过,当
json
是一个字符串时,会出现这个错误,首先我需要解析。但是当我使用
JSON.parse
时,控制台会说它已经是一个对象(
JSON中位于位置1的意外标记o

$(文档).ready(函数(){
$(“#getMessage”)。在(“单击”,函数()上){  
$.getJSON(“http://quotes.rest/qod.json,函数(json){
var html=“”;
forEach(函数(val){
var keys=Object.keys(val);
html+=“”;
键。forEach(功能(键){
html+=“+key+”:“+val[key]+”
”; }); html+=“
”; }); $(“.message”).html(html); }); }); });
json
是一个对象,而不是数组。只能在阵列上使用forEach

如前所述,您可以像这样迭代对象的键:

Object.keys(json).forEach(function(key) {
    var value = json[key];
    ...
});

$.getJson
已经将JSON对象转换为javascript对象,因此您无需再次解析它

然而,您的问题始于
forEach
,这是一种数组方法,而不是对象方法,因此它在您的用例中不起作用


var jsonKeys=Object.keys(json);jsonKeys.forEach(…)
将起作用,因为
Object.keys
返回一个对象键数组。

除了其他人所说的以外,JSON响应看起来不像您认为的那样

var json={
“成功”:{
“总数”:1
},
“内容”:{
“引言”:[{
“引言”:“不是你是否被击倒,而是…你是否站起来。”,
“长度”:“65”,
“作者”:“文斯·伦巴第”,
“标签”:[
“失败”,
“激励”,
“从失败中学习”
],
“类别”:“激励”,
“日期”:“2016-08-09”,
“标题”:“当日鼓舞人心的名言”,
“背景”:https://theysaidso.com/img/bgs/man_on_the_mountain.jpg",
“id”:“06Qdox8w6U3U1CGlLqRwFAeF”
}]
}
};
var messageEl=document.querySelector('.message');
messageEl.innerText=json.contents.quotes[0].quote

json
是一个对象,而不是一个数组-上面没有
forEach
方法。我正在处理同样的问题,这段代码非常有效。你能解释一下你是如何得出答案的吗?我抓起问题中的URL,然后将它放到浏览器中,看看返回了什么JSON<代码>http://quotes.rest/qod.json
如果出于任何原因无法执行此操作,请使用
console.dir()
将响应转储到控制台中,以便查看对象的外观。
Object.keys(json).forEach(function(key) {
    var value = json[key];
    ...
});