Как мне разобрать JSON-подобные данные из Yahoo Finance? - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь использовать HTML и JavaScript, чтобы получить котировки акций от Yahoo и отобразить их в гаджете для себя. Я запрашиваю следующий URL с примером символа: https://query1.finance.yahoo.com/v7/finance/quote?symbols=aaba

Вывод в формате JSON или JSON, в зависимости от значения одинарных и двойных кавычек. Браузер TOR распознает данные в формате JSON.

Мой код может извлекать данные и получать их, но JSON.parse не работает на выходе. Вот пример кода, который я пишу и загружаю с помощью IE11, чтобы проверить его перед переходом на гаджет.

<!DOCTYPE html>
<html>
  <body>
    <p id="symbol"></p>
    <p id="shortName"></p>
    <p id="bid"></p>
    <p id="debug"></p>
    <script>
      var objJSON;
      var objXHR=new XMLHttpRequest();
      objXHR.open("GET", "https://query1.finance.yahoo.com/v7/finance/quote?symbols=aaba");
      objXHR.onreadystatechange=function() {
        console.log(objXHR.status);
        if (objXHR.readyState == 4 && objXHR.status == 200) {
          console.log("Ready==4");
          console.log(objXHR.responseText); //log the response
          objJSON = JSON.parse(objXHR.responseText);
          //objJSON = JSON.parse('{ "symbol":"aaba", "shortName":"Altaba", "bid":0}'); // Test data in properly-formatted JSON text
          console.log("length " + Object.keys(objJSON).length); //indicator whether it parsed
          document.getElementById("symbol").innerHTML = "symbol " + objJSON.symbol;
          document.getElementById("shortName").innerHTML = "shortName " + objJSON.shortName;
          document.getElementById("bid").innerHTML = "bid " + objJSON.bid;
        }
      };
      objXHR.send(null);
    </script>
  </body>
</html>

Данные не должны иметь от Yahoo, но это должно быть то, что я могу получить в гаджете Windows и работать, и быть настолько простым, насколько это возможно, потому что я не это продвинуто.

1 Ответ

0 голосов
/ 10 сентября 2018

Похоже, я просто недостаточно хорошо понял структуру объекта / массива JSON. Похоже, что строка, возвращаемая Yahoo Finance, представляет собой {object: {array [object: value]}}. Я использовал console.log, чтобы пройти через структуру JSON в IE11, и в итоге получил там.

...