Скрипт Google Apps: возврат «null» при попытке выбрать конкретный объект c в ответе API, но я вижу его в исходном ответе - PullRequest
4 голосов
/ 26 мая 2020

Я относительный новичок ie к JSON в целом. Я пытаюсь реализовать некоторые функции в скриптах Google Apps.

Моя функция вызывает API www.goldpricez.com и получает обратно некоторые данные о ценах на золото по всему миру, и из этих данных я хотел бы вернуть один укажите значение c (цена золота в MAD) в этом случае.

 function fetchGoldRates() {

 var currency = "mad";
 var unit = "gram";

 var url = 'http://goldpricez.com/api/rates/currency/' + currency + '/measure/' + unit;

 var params = {
    'method': 'GET',
    'muteHttpExceptions': true,
    'headers': {
      'X-API-KEY': '###'
    }
 };

 var response = UrlFetchApp.fetch(url,params);

 var parsedData = JSON.parse(response.getContentText());

 Logger.log(parsedData); //Works and include the data I want in the object gram_in_mad

 Logger.log(parsedData.gram_in_mad); //Returns Null

}

Это JSON данные, которые я получаю обратно ... в красивом визуализированном формате для печати. ​​

{
   "ounce_price_usd": "1729.54",
   "gmt_ounce_price_usd_updated": "26-05-2020 04:18:01 am",
   "ounce_price_ask": "1729.54",
   "ounce_price_bid": "1729.03",
   "ounce_price_usd_today_low": "1724.91",
   "ounce_price_usd_today_high": "1730.33",
   "usd_to_mad": "9.871449",
   "gmt_mad_updated": "26-05-2020 12:05:00 am",
   "ounce_in_mad": 17073.066,
   "gram_to_ounce_formula": 0.0321,
   "gram_in_usd": 55.518234,
   "gram_in_mad": 548.0454
}

Я не могу получить доступ к отдельному элементу, который мне нужен, а именно gram_in_mad, и я не могу понять почему. Вот консоль регистратора Google Apps Script, показывающая мои строки журнала.

1 Ответ

2 голосов
/ 26 мая 2020

Из вашего вопроса и сценария:

  • Если значение This is the JSON data I receive back...in a pretty print visualized format. является значением JSON.stringify(parsedData), parsedData.gram_in_mad возвращает 548.0454.

  • Но если значение This is the JSON data I receive back...in a pretty print visualized format. является значением parsedData, я подумал, что в случае response из var response = UrlFetchApp.fetch(url,params);, parsedData может быть строкой, даже если var parsedData = JSON.parse(response.getContentText());

А как насчет следующей модификации?

От:

var parsedData = JSON.parse(response.getContentText());

Кому:

var parsedData = JSON.parse(JSON.parse(response.getContentText()));
...