0

私の意見では、最適に設定されていない JSON 応答を解析しています。実際の応答は次のとおりです。

[
    {"challenge_id":"39029"},
    {"song1_id":"198","name":"PRAY","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/TAKE_THAT_-_PRAY.mp3"},
    {"song2_id":"251","name":"THE TEARS OF A CLOWN","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/SMOKEY_ROBINSON_-_THE_TEARS_OF_A_CLOWN.mp3"},
    {"song3_id":"11","name":"WONDERFUL TONIGHT","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/ERIC_CLAPTON_-_WONDERFUL_TONIGHT.mp3"},
    {"song4_id":"288","name":"THE NAME OF THE GAME","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/ABBA_-_THE_NAME_OF_THE_GAME.mp3"},
    {"song5_id":"159","name":"I'M EVERY WOMAN","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/CHAKA_KHAN_-_I'M_EVERY_WOMAN.mp3"},
    {"status":"ok"}
]

そして、これを解析しようとしたのは次のとおりです。

var challenge_Songs = JSON.parse(this.responseText);

for(var i = 1; i<challenge_Songs.length-1; i++){
    challengeSongs[i-1] = challenge_Songs[i].url;
    challengeTitles[i-1] = challenge_Songs[i].name;
    voteSongIds[i-1]= challenge_Songs.song[i]_id;
}

私の問題は、ループの反復ごとに名前が変わるため、voteSongIds として設定したものを取得することです。上記で試したことは、実行時エラーを引き起こしています。votesongids を含む行にコメントを付けると、すべてが機能します。解析 JSON を解析するにはどうすればよいですか?! 助けていただければ幸いです:)私はチタンを使用していますが、これらの目的では、それは単なるjavascriptです!

4

2 に答える 2

2

これはあなたが探している結果ですか?

var challenge_Songs  = [
{"challenge_id":"39029"},
{"song1_id":"198","name":"PRAY","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/TAKE_THAT_-_PRAY.mp3"},
{"song2_id":"251","name":"THE TEARS OF A CLOWN","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/SMOKEY_ROBINSON_-_THE_TEARS_OF_A_CLOWN.mp3"},{"song3_id":"11","name":"WONDERFUL TONIGHT","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/ERIC_CLAPTON_-_WONDERFUL_TONIGHT.mp3"},
{"song4_id":"288","name":"THE NAME OF THE GAME","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/ABBA_-_THE_NAME_OF_THE_GAME.mp3"},
{"song5_id":"159","name":"I'M EVERY WOMAN","url":"https:\/\/s3-eu-west-1.amazonaws.com\/test\/CHAKA_KHAN_-_I'M_EVERY_WOMAN.mp3"},{"status":"ok"}]

var challengeTitles=[], 
    challengeSongs = [], 
    voteSongIds=[];

for(var i = 1; i < challenge_Songs.length-1; i++){
    challengeTitles.push(challenge_Songs[i]['name']);
    challengeSongs.push(challenge_Songs[i]['url']);
    voteSongIds.push(challenge_Songs[i]['song'+ i +'_id'])
}

console.log(challengeTitles);
console.log(challengeSongs);
console.log(voteSongIds);
于 2013-10-01T09:16:17.900 に答える
0

次のコードを試してください。これは、キーまたは値が何であれ完璧に機能します

for(var i = 0; i<challenge_Songs.length; i++){
  for(key in challenge_Songs[i]){
   console.log("\n key=>" + key + " : value=> " + challenge_Songs[i][key]);
  }
  console.log("\n");
}

すべてのキーと対応する値をより簡単な方法で表示します

于 2013-10-01T09:40:28.210 に答える