【问题标题】:Processing JSON data to use in Highcharts处理 JSON 数据以在 Highcharts 中使用
【发布时间】:2017-11-13 00:12:46
【问题描述】:

我想使用 highcharts 从外部数据源制作图表。我遇到的问题是我的数据不兼容:

{
"channel":{
"id":1123376,
"name":"Global Weather Experiment Raspberry Pi",
"latitude":"0.0",
"longitude":"0.0",

"field1":"Temperature",
"field2":"Presurre",
"field3":"Humidity",
"field4":"Air Quality",
"field5":"Rain",
"field6":"Wind Speed",
"field7":"Wind Direction",
"field8":"Wind Power",

"created_at":"2016-10-22T11:37:27Z",
"updated_at":"2017-06-11T10:01:02Z",
"last_entry_id":5438},

"feeds":[
    {
    "created_at":"2017-06-11T09:01:02Z",
    "entry_id":5437,
    "field1":"23.13"
    },
    {
    "created_at":"2017-06-11T10:01:02Z",
    "entry_id":5438,
    "field1":"23.88"
    }
]}

我需要将“created_at”和“field1”转换成这样:

?([
    [Date.UTC(2017,6,11,09,01,02Z),23.13],
    [Date.UTC(2017,6,11,10,01,02Z),23.88]
]);

当然还有更多条目,我需要帮助创建可以转换它的循环,尤其是日期。

【问题讨论】:

    标签: javascript json highcharts type-conversion external


    【解决方案1】:

    var data={
    "channel":{
    "id":1123376,
    "name":"Global Weather Experiment Raspberry Pi",
    "latitude":"0.0",
    "longitude":"0.0",
    
    "field1":"Temperature",
    "field2":"Presurre",
    "field3":"Humidity",
    "field4":"Air Quality",
    "field5":"Rain",
    "field6":"Wind Speed",
    "field7":"Wind Direction",
    "field8":"Wind Power",
    
    "created_at":"2016-10-22T11:37:27Z",
    "updated_at":"2017-06-11T10:01:02Z",
    "last_entry_id":5438},
    
    "feeds":[
        {
        "created_at":"2017-06-11T09:01:02Z",
        "entry_id":5437,
        "field1":"23.13"
        },
        {
        "created_at":"2017-06-11T10:01:02Z",
        "entry_id":5438,
        "field1":"23.88"
        }
    ]}
    //console.log(data.feeds)
    var rqData=data.feeds;
    var formattedData=[]
    for(var i=0;i<rqData.length;i++){
    //formattedData array contains (fist data) date in milliseconds and (second data) in number 
     formattedData.push([Date.parse(rqData[i].created_at),Number(rqData[i].field1)])
    }
    //console.log(formattedData)
    
    
    Highcharts.chart('container', {
        chart: {
            type: 'spline'
        },
        title: {
            text: 'Snow depth at Vikjafjellet, Norway'
        },
        subtitle: {
            text: 'Irregular time data in Highcharts JS'
        },
        xAxis: {
            type: 'datetime',
            dateTimeLabelFormats: { // don't display the dummy year
                month: '%e. %b',
                year: '%b'
            },
            title: {
                text: 'Date'
            }
        },
        yAxis: {
            title: {
                text: 'Snow depth (m)'
            },
            min: 0
        },
        tooltip: {
            headerFormat: '<b>{series.name}</b><br>',
            pointFormat: '{point.x:%e. %b}: {point.y:.2f} m'
        },
    
        plotOptions: {
            spline: {
                marker: {
                    enabled: true
                }
            }
        },
    
        series: [{
            name: 'Some Year',
            // Define the data points. All series have a dummy year
            // of 1970/71 in order to be compared on the same x axis. Note
            // that in JavaScript, months start at 0 for January, 1 for February etc.
            data: formattedData
        }]
    });
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/exporting.js"></script>
    
    <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

    formattedData 在高图中传递为

    series: [{
        name: 'Some Year'
        data: formattedData
    }]
    

    还有xAxis 包含type: 'datetime',

    【讨论】:

    • 如果你想使用UTC你可以使用UTC setting
    • 非常感谢,您真好,您抽出时间来帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    相关资源
    最近更新 更多