Как потреблять это json - PullRequest
       26

Как потреблять это json

0 голосов
/ 18 июня 2020

Я пытаюсь использовать этот API https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=IBM&interval=5min&apikey=demo, используя диаграмму свечей d3 js, мне удалось запустить пример с использованием этого индекса. html файл, IDK, почему он не может быть запущен в фрагменте этого stackoverflow не предлагает ни codepen, ни чего-либо еще, но он работает в локальной среде и даже на производстве.

Вот файл.

Если вы скопируете и вставите его в файл. html и запустите его в локальном браузере, он принесет извинения за неудобства.

Я пытаюсь использовать этот пример API на этой диаграмме свечей

Мне нужно кое-что настроить здесь, чтобы использовать этот URL

var json =[{"close":69.06,"date":"20161020","high":70.1,"low":68.51,"open":68.87,"openInt":0,"volume":736533},{"close":70.58,"date":"20161023","high":70.74,"low":69.67,"open":69.9,"openInt":0,"volume":396860},{"close":71.17,"date":"20161024","high":72.99,"low":71.17,"open":72.6,"openInt":0,"volume":663227}]

и здесь, чтобы отформатировать эти данные, потому что пример, который у меня нет, не имеет ничего общего с тем, что у меня есть

// DATA STUFF
var formatDecimal = d3.format(',.2f');

var parseDate = d3.timeParse("%Y%m%d"); // 20150630

var outputFormat =  d3.timeFormat("%d %b %Y") // 30 June 2015

var dataLoaded = null;

var dataModelJSON = function( d ) {
    return {

        date : parseDate(+d.date),
        open : +d.open,
        high : +d.high,
        low : +d.low,
        close : +d.close,
        volume: +d.volume,
        openInt : +d.openInt
    }
};
var data = json.map( dataModelJSON );

Мне удалось добавить пример о том, как получить данные из API, используя чистый javascript, теперь у меня есть JSON на 'var json;' но я получаю еще одну ошибку на Uncaught TypeError: Cannot read property 'map' of undefined Я пытаюсь получить данные только из этого свойства ["Time Series (1min)"] из этого JSON

1 Ответ

0 голосов
/ 18 июня 2020

Ваш код не работает ... но, проверив код, я увидел, что вы делаете json.map(....), но вы не можете этого сделать, потому что json - это объект, а не массив. Чтобы преобразовать ваш json объект в массив, который вам нужен, необходимо l oop поверх ключей объекта следующим образом:

const timeSeries = json['Time Series (5min)'];
var data = [];
Object.keys(timeSeries).forEach(key => {
    const d = timeSeries[key];
    d.date = new Date(key);
    data.push( d );
});

Итак, используйте l oop вместо json.map что у вас есть.

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