Javascript 我应该如何循环处理这个JSON数据?

Javascript 我应该如何循环处理这个JSON数据?,javascript,json,Javascript,Json,这是我的代码,我想从数据中打印出“song”属性。指向JSON的链接是-> var requestURL=http://starlord.hackerearth.com/sureify/cokestudio'; var request=new XMLHttpRequest(); 打开('GET',requestURL); request.responseType='json'; request.send(); request.onload=函数(){ var myjsondata=reques

这是我的代码,我想从数据中打印出“song”属性。指向JSON的链接是->


var requestURL=http://starlord.hackerearth.com/sureify/cokestudio';
var request=new XMLHttpRequest();
打开('GET',requestURL);
request.responseType='json';
request.send();
request.onload=函数(){
var myjsondata=request.response;
showdata(myjsondata);
} 
函数showdata(数据){
var song_name=数据;
对于(i=0;i<3;i++){
文件。书写(宋_姓名);
文件。写(“
”); } }

当我在浏览器中运行它时,我将[object object]、[object object object]、[object object object]、[object object object]、[object object object]作为输出或未定义。您的数据如下所示:

[  //the array in data
{  //the first object, e. g. data[0]
  "song":"Afreen Afreen", // song => data[0].song
  "url":"http://hck.re/Rh8KTk",
  "artists":"Rahat Fateh Ali Khan, Momina Mustehsan",
  "cover_image":"http://hck.re/kWWxUI"
},
{  
  "song":"Aik Alif",
  "url":"http://hck.re/ZeSJFd",
  "artists":"Saieen Zahoor, Noori",
  "cover_image":"http://hck.re/3Cm0IX"
},
{  
  "song":"Tajdar e haram",
  "url":"http://hck.re/wxlUcX",
  "artists":"Atif Aslam",
  "cover_image":"http://hck.re/5dh4D5"
}]
因此,循环一次就可以了

var limit=Math.max(data.length,100);//max displayed number

for(var i=0;i<limit;i++){
 document.write(data[i].song+"<br>");
}
var limit=Math.max(数据长度,100)//最大显示数

对于(var i=0;i您的数据如下所示:

[  //the array in data
{  //the first object, e. g. data[0]
  "song":"Afreen Afreen", // song => data[0].song
  "url":"http://hck.re/Rh8KTk",
  "artists":"Rahat Fateh Ali Khan, Momina Mustehsan",
  "cover_image":"http://hck.re/kWWxUI"
},
{  
  "song":"Aik Alif",
  "url":"http://hck.re/ZeSJFd",
  "artists":"Saieen Zahoor, Noori",
  "cover_image":"http://hck.re/3Cm0IX"
},
{  
  "song":"Tajdar e haram",
  "url":"http://hck.re/wxlUcX",
  "artists":"Atif Aslam",
  "cover_image":"http://hck.re/5dh4D5"
}]
因此,循环一次就可以了

var limit=Math.max(data.length,100);//max displayed number

for(var i=0;i<limit;i++){
 document.write(data[i].song+"<br>");
}
var limit=Math.max(data.length,100);//最大显示数

对于(var i=0;i您不能将整个song对象写入文档。您应该首先映射它:

var songNames = data.map(function(item) { return item.song; });
这将为您提供一个包含所有名称(字符串)的数组,您可以将其写入文档:

songNames.forEach(function(songName) {
    document.write(songName + '<br>');
});
songNames.forEach(函数(songName){
编写(songName+“
”); });
您不能将整个song对象写入文档。您应该首先映射它:

var songNames = data.map(function(item) { return item.song; });
这将为您提供一个包含所有名称(字符串)的数组,您可以将其写入文档:

songNames.forEach(function(songName) {
    document.write(songName + '<br>');
});
songNames.forEach(函数(songName){
编写(songName+“
”); });
您需要使用
JSON.stringify
;如果您计划写入文档,我建议使用
pre
标记包装,并保留字符串格式

let data=[
{  
“歌”:“阿弗林·阿弗林”,
“url”:”http://hck.re/Rh8KTk",
“艺术家”:“Rahat Fateh Ali Khan,Momina Mustehsan”,
“封面图片”:http://hck.re/kWWxUI"
},
{  
“歌曲”:“爱我的生活”,
“url”:”http://hck.re/ZeSJFd",
“艺术家”:“Saieen Zahoor,Noori”,
“封面图片”:http://hck.re/3Cm0IX"
},
{  
“歌”:“塔伊达尔圣地”,
“url”:”http://hck.re/wxlUcX",
“艺术家”:“Atif Aslam”,
“封面图片”:http://hck.re/5dh4D5"
}
];

document.write(“”+JSON.stringify(data,null,'\t')+“”);
您需要使用
JSON.stringify
;如果您计划写入文档,我建议使用
pre
标记包装以保留字符串格式

let data=[
{  
“歌”:“阿弗林·阿弗林”,
“url”:”http://hck.re/Rh8KTk",
“艺术家”:“Rahat Fateh Ali Khan,Momina Mustehsan”,
“封面图片”:http://hck.re/kWWxUI"
},
{  
“歌曲”:“爱我的生活”,
“url”:”http://hck.re/ZeSJFd",
“艺术家”:“Saieen Zahoor,Noori”,
“封面图片”:http://hck.re/3Cm0IX"
},
{  
“歌”:“塔伊达尔圣地”,
“url”:”http://hck.re/wxlUcX",
“艺术家”:“Atif Aslam”,
“封面图片”:http://hck.re/5dh4D5"
}
];

document.write(“”+JSON.stringify(data,null,'\t')+“”);
您需要对对象进行stringify以使其可读

function showdata(data){


        for (i = 0; i < 3; i++) {

            document.write(data[i].song);
            document.write("<br>");

        }
    }

var requestURL=http://starlord.hackerearth.com/sureify/cokestudio';
var request=new XMLHttpRequest();
打开('GET',requestURL);
request.responseType='json';
request.send();
request.onload=函数(){
var myjsondata=request.response;
showdata(myjsondata);
} 
函数showdata(数据){
var song_name=数据;
对于(i=0;i<3;i++){
document.write(JSON.stringify(song_name));
文件。写(“
”); } }
您需要将对象字符串化以使其可读

function showdata(data){


        for (i = 0; i < 3; i++) {

            document.write(data[i].song);
            document.write("<br>");

        }
    }

var requestURL=http://starlord.hackerearth.com/sureify/cokestudio';
var request=new XMLHttpRequest();
打开('GET',requestURL);
request.responseType='json';
request.send();
request.onload=函数(){
var myjsondata=request.response;
showdata(myjsondata);
} 
函数showdata(数据){
var song_name=数据;
对于(i=0;i<3;i++){
document.write(JSON.stringify(song_name));
文件。写(“
”); } }
请求的响应是一个json对象数组,您只需反复尝试写入返回对象。您需要迭代返回的数据并输出每个对象的值。将showdata函数更改为:

函数showdata(数据){
对于(i=0;i<3;i++){
document.write(数据[i].song);
文件。写(“
”); } }
请求的响应是一个json对象数组,您只需反复尝试写入返回对象。您需要迭代返回的数据并输出每个对象的值。将showdata函数更改为:

函数showdata(数据){
对于(i=0;i<3;i++){
document.write(数据[i].song);
文件。写(“
”); } }
你不能直接在浏览器上打印对象,你需要解析它。不需要使用parse@NitinDhomse我得到了答案谢谢你的回复你可以检查Jonas答案。你不能直接在浏览器上打印对象,你需要解析它。不需要使用parse@NitinDhomse我得到了答案谢谢你的回复你可以检查Jonas答案。谢谢@Jona你让我很开心。但是当我在mozilla中运行它时,网页一直在加载如何停止该操作?我应该使用break语句吗?但是在哪里?@Jonasw@rock斯通:那么你想限制结果吗?我想在JSON文件中显示所有9首歌曲,这样当所有歌曲都打印在屏幕上后,它应该停止加载,但不会停止@Jonas wThanks@Jonas w您制作了我的但是当我在mozilla中运行它的时候,网页一直在加载如何停止它?我应该使用break语句吗?但是在哪里?@Jonasw@rock斯通:那么你想限制结果吗?我想在JSO中显示所有9首歌曲