简体   繁体   中英

I don't manage to parse JSON in google app script

I'm trying to grab song lyrics from the orion.apiseeds lyrics API - it works and I get a JSON, that I'm incapable of parsing.

https://orion.apiseeds.com/api/music/lyric/Oasis/Wonderwall?apikey=xx gives back


{"result":{"artist":{"name":"Oasis"},"track":{"name":"Wonderwall","text":"Today is gonna be the day that they're gonna throw it back to you.\r\nBy now you should've somehow realized what you gotta do.\r\nI don't believe that anybody, feels the way I do, about you now.\r\n\r\nBackbeat, the word is on the street that the fire in your heart is out.\r\nI'm sure you've heard it all before but you never really had a doubt.\r\nI don't believe that anybody, feels the way I do, about you now.\r\n\r\nAnd all the roads we have to walk are winding.\r\nAnd all the lights that lead us there are blinding.\r\nThere are many things that I, would like to say to you but I don't know how.\r\n\r\nBecause maybe, you're gonna be the one that saves me?\r\nAnd after all, you're my wonderwall.\r\n\r\nToday was gonna be the day but they'll never throw it back to you.\r\nBy now you should've somehow realized what you're not to do.\r\nI don't believe that anybody, feels the way I do, about you now.\r\n\r\nAnd all the roads that lead you there were winding.\r\nAnd all the lights that light the way are blinding.\r\nThere are many things that I, would like to say to you but I don't know how.\r\n\r\nI said maybe, you're gonna be the one that saves me?\r\nAnd after all, you're my wonderwall.\r\n\r\nI said maybe, (I said maybe)\r\nYou're gonna be the one that saves me?\r\nAnd after all, you're my wonderwall.\r\n\r\nI said maybe, (I said maybe)\r\nYou're gonna be the one that saves me? (that saves me)\r\nYou're gonna be the one that saves me? (that saves me)\r\nYou're gonna be the one that saves me? (that saves me)","lang":{"code":"en","name":"English"}},"copyright":{"notice":"Wonderwall lyrics are property and copyright of their owners. Commercial use is not allowed.","artist":"Copyright Oasis","text":"All lyrics provided for educational purposes and personal use only."},"probability":100,"similarity":1}}

My code to fetch this is:

function getLyrics(url) {
  var response = UrlFetchApp.fetch(url);
  var responseObject = JSON.parse(response.getContentText());
}

Then, that's where the problem arises.

1) Logger.log(reponseObject); ==> gives the thing I pasted above.

2)

for (var i=0;i<responseObject.length;i++) {
    var item = responseObject[i];
    Logger.log(JSON.stringify(item));

==> gives NOTHING in the console...

3)

function printJson(myObject) {
  // define an array of all the object keys
  var headerRow = Object.keys(myObject);

  // define an array of all the object values
  var row = headerRow.map(function(key){ return myObject[key]});

  // define the contents of the range
  var contents = [
    headerRow,
    row
  ];

  // select the range and set its values
  var ss = SpreadsheetApp.getActive();
  var rng = ss.getActiveSheet().getRange(1, 1, contents.length, headerRow.length )
  rng.setValues(contents) 
}

===> fills one row with "result" and the next row with all the rest of the JSON.

I feel like i'm missing a basic JSON-related thing... Thanks for your help

var responseObject = JSON.parse(response.getContentText());
var lyrics = responseObject.result.track.text;

That was easy enough;-)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM