Я не могу манипулировать JSON в Google Sheets - PullRequest
0 голосов
/ 11 апреля 2020

Этот код в Javascript work:

var obj = {
    "Global Quote": {
        "01. symbol": "BMGB4.SAO",
        "02. open": "4.4600",
        "03. high": "4.6700",
        "04. low": "4.3000",
        "05. price": "4.4800",
        "06. volume": "969900",
        "07. latest trading day": "2020-04-09",
        "08. previous close": "4.4000",
        "09. change": "0.0800",
        "10. change percent": "1.8182%"
    }
};
var myJSON = JSON.stringify(obj);
console.log(myJSON);
myJSON = JSON.parse(myJSON);
console.log(myJSON);
console.log(myJSON["Global Quote"]);
console.log(myJSON["Global Quote"]["05. price"]);

Однако, используя Google Sheets, компилятор обвиняет меня в ошибке: TypeError: Cannot read property '05. цена не определена (строка 53, файл «Код»)

Какого черта, как вы можете распознать JSON обычно в Javascript и Google Sheets?

// Я спрятал переменная url, но это будет тот, который возвращает тот же JSON, что и код javascript, который я разместил здесь.

var response = UrlFetchApp.fetch (url);
var data = JSON.parse (JSON.stringify (response.getContentText ()));

Here is my code on Google Sheets:
  // We convert it to JSON.
   var myJSON = JSON.stringify (data);
   Logger.log (myJSON);
   myJSON = JSON.parse (myJSON);
   Logger.log (myJSON);
   Logger.log (myJSON ["Global Quote"]);
   Logger.log (myJSON ["Global Quote"]["05. Price"]);

1 Ответ

1 голос
/ 11 апреля 2020

Проблема:

var data = JSON .parse (JSON .stringify (response.getContentText ()));

Стрификация и анализ будут результат в том же объекте / строке. Это то же самое, что написать

var data = response.getContentText ();

data теперь string типа.

В результате следующей цепочки событий myJSON будет string, а не object

   var myJSON = JSON.stringify (data);// Double stringified
   myJSON = JSON.parse (myJSON);//Single stringified
   Logger.log (myJSON ["Global Quote"]);//undefined
   Logger.log (myJSON ["Global Quote"]["05. Price"]);//error

TypeError: Невозможно прочитать свойство '05. цена неопределенная (строка 53, файл «Код»)

Решение:

parse это еще раз или parse это к объекту напрямую:

const data = response.getContentText(); //string
const yourJSON = JSON.parse(data);//object
console.log (yourJSON ["Global Quote"]);//object
console.log (myJSON ["Global Quote"]["05. Price"]);// no error 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...