Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to parse csv from github?

jQuery.ajax({
    url: "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv",
    type: 'get',
    dataType: 'json',
    success: function(data) {
        console.log(data);
    },
    error: function(jqXHR, textStatus, errorThrow){
        alert("Error: " + jqXHR['responseText']);
    }
});

I need the output as formatted json but It's going to error, basically trying to parse this

https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv

UPDATE

They've changed the link

https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv

like image 285
rob.m Avatar asked Dec 22 '22 18:12

rob.m


1 Answers

Parsing CSV is not always as simple as doing "...".split(','). And the file here is a perfect example of that. Some fields contain a ,, and thus are wrapped in quotes.

I suggest using Papa Parse which will handle that for you. I've used it many times before, it saved me a lot of headaches!

$.ajax({
    url: "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/6eae5b65a32b679efacf95a2867648330f83a871/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv",
    success: function(csv) {
        const output = Papa.parse(csv, {
          header: true, // Convert rows to Objects using headers as properties
        });
        if (output.data) {
          console.log(output.data);
        } else {
          console.log(output.errors);
        }
    },
    error: function(jqXHR, textStatus, errorThrow){
        console.log(textStatus);
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.1.0/papaparse.min.js"></script>
like image 148
blex Avatar answered Jan 02 '23 23:01

blex