Praveen
Praveen

Reputation: 1802

how to fetch data from json file in highchart

I am trying to get chart data from json file. Using it fist time so keeping it copied from high chart documentation. But it is not working.

Json:

[ 
              { "name"  : "Asia", "data" :[4502, 635, 809, 947, 1402, 3634, 5268] },
              { "name"  : "Africa", "data" : [106, 107, 111, 133, 221, 767, 1766] },
              { "name"  : "Europe",    "data" : [163, 203, 276, 408, 547, 729, 628] },
              { "name"  : "America",    "data" : [18, 31, 54, 156, 339, 818, 1201] },
              {"name"  : "Oceania",    "data" : [2, 2, 2, 6, 13, 30, 46] }
            ]

Script:

<script>
$(function () {
    var options = {
        chart: {
            renderTo: 'container',
            type: 'spline'
        },
        title: {
            text: 'Historic and Estimated Worldwide Population Growth by Region'
        },
        subtitle: {
            text: 'Source: Wikipedia.org'
        },
        xAxis: {
            categories: ['1750', '1800', '1850', '1900', '1950', '1999', '2050'],
            tickmarkPlacement: 'on',
            title: {
                enabled: false
            }
        },
        yAxis: {
            title: {
                text: 'Billions'
            },
            labels: {
                formatter: function () {
                    return this.value / 1000;
                }
            }
        },
        tooltip: {
            shared: true,
            valueSuffix: ' millions'
        },
        plotOptions: {
            area: {
                stacking: 'normal',
                lineColor: '#666666',
                lineWidth: 1,
                marker: {
                    lineWidth: 1,
                    lineColor: '#666666'
                }
            }
        },
        series: [{}]




    };


 $.getJSON('http://s000.tinyupload.com/?file_id=46814948573049842058', function(data) {
        options.series[0].data = data;
        var chart = new Highcharts.Chart(options);
    });
})
</script>

Console doesn't shows any error. Could any one see what is the issue with the code.

Upvotes: 0

Views: 395

Answers (1)

Angelo Ber&#231;acola
Angelo Ber&#231;acola

Reputation: 173

I can't emulate you code from my work, but, this should fix it:

  • The TinyUpload doesnt allow to access you data.json directly. Put it somewhere you can. ( OBS: this is not a JSON file, it is a string that describes an array/object structure , you should convert it to a json format first);

If you decide to receive it as a string anyway, do this step:

  • When you receive the data, use Eval() function to convert it
    into and array/object , and then put it into HighChart script.

Example

var string = '['+
              '{ "name"  : "Asia", "data" :[4502, 635, 809, 947, 1402, 3634, 5268] },'+
              '{ "name"  : "Africa", "data" : [106, 107, 111, 133, 221, 767, 1766] },'+
              '{ "name"  : "Europe",    "data" : [163, 203, 276, 408, 547, 729, 628] },'+
              '{ "name"  : "America",    "data" : [18, 31, 54, 156, 339, 818, 1201] },'+
              '{"name"  : "Oceania",    "data" : [2, 2, 2, 6, 13, 30, 46] }'+
            ']';
var yourDataObject = eval(string);

PS: I thought the right way to load the data it is:

options.series = data;

Upvotes: 2

Related Questions