Функция D3.json для возврата только части данных файла json

#javascript #d3.js

#javascript #d3.js

Вопрос:

Я читаю файл csv, используя d3.csv который работает нормально. Чтение csv-файла также переименовывает столбцы с помощью функции:

Однако я бы предпочел прочитать те же данные из файла json.

 d3.csv("myfile.csv", function(d) {
    return {
        location: d.identifier,
        date: new Date(d.created),
        amount: d.count_objects
        };
}).then(function getData(rawData) {

    console.log(rawData[0]);        

});
  

Консольный вывод d3.csv возвращает результаты с переименованными столбцами:

 console:

{location: "CO", date: Wed Jan 22 2020 00:00:00 GMT-0500 (Eastern Standard Time), amount: "0"}
  

Я просто заменил csv на файл json в том же коде, ожидая, что он будет прочитан аналогично, но это не так.

 d3.json("myfile.json", function(d) {
    return {
        location: d.identifier,
        date: new Date(d.created),
        amount: d.count_objects
        };
}).then(function getData(rawData) {

    console.log(rawData[0]);
    
});
  

Однако консольный вывод d3.json возвращает результаты с оригинальными ключами json:

 console:

{created: "2020-01-22T00:00:00.000", identifier: "CO", count_objects: "0"}
  

Какие изменения требуются для d3.json() получения тех же результатов, d3.csv() например, для возврата результатов с переименованными ключами?

Ответ №1:

d3.json не использует функцию строки, поскольку данные json не всегда являются массивом. Для обработки данных вы можете сделать что-то вроде:

 d3.json("myfile.json").then(function (json) {
    return json.map(function (d) {
        return {
            location: d.identifier,
            date: new Date(d.created),
            amount: d.count_objects
        };
    });
}).then(function getData(rawData) {

    console.log(rawData[0]);
    
});