Javascript 将JSON转换为HTML:uncaughtTypeError:JSON.forEach不是函数
我想将JSON转换为HTML以在网站上显示它。我在谷歌上搜索过,当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
是一个字符串时,会出现这个错误,首先我需要解析。但是当我使用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];
...
});