donglie1994 2018-02-02 03:27
浏览 82
已采纳

Javascript HighChart在Series和json对象中有多个名称和数据

I have a JSON object which is retrieved from MySQL using PHP.It is as follows:

{
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, null, null]
}

The content can vary as it totally depends on data retrieved from database at any point of time.Now in Javascript I 'm plotting HighCharts, and need to use the data retrieved from JSON object, i.e. I' m having series:

[{
    name: 'A',
    data: [1, 2, 3]
}, {
    name: 'B',
    data: [4, 5, 6]
}, {
    name: 'C',
    data: [7, , ]
}]

Here I have typed array data, but it has to be dynamic, as I'll not be knowing the contents of the array. My expected output is as follows:

[{
    name: ' A ',
    data: Array[' A ']
    // should give the data of [1,2,3]
}, {
    name: ' B ',
    data: Array[' B ']
}, {
    name: ' C ',
    data: Array[' C ']
}]

Kindly suggest how to proceed?

  • 写回答

2条回答 默认 最新

  • dtpw54085 2018-02-02 05:44
    关注

    You can use JSON_NUMERIC_CHECK http://php.net/manual/en/json.constants.php to form proper associative array in php.

    For current scenario you can update you json data dynamically

    {
        'A': [1, 2, 3],
        'B': [4, 5, 6],
        'C': [7, null, null]
    }
    

    to required form

    [{
      "name": "A",
      "data": [1, 2, 3]
    }, {
      "name": "B",
      "data": [4, 5, 6]
    }, {
      "name": "C",
      "data": [7, 0, 0]
    }]
    

    by using code below

    var dataJ = {
      'A': [1, 2, 3],
      'B': [4, 5, 6],
      'C': [7, null, null]  
    }
    var highchartsData = []; //series data
    Object.keys(dataJ).map((el) => {
      highchartsData.push({
        name: el,
        data: dataJ[el].map(Number) //convert to number
      })
    })
    

    var dataJ = {
      'A': [1, 2, 3],
      'B': [4, 5, 6],
      'C': [7, null, null]
    }
    var highchartsData = [];
    Object.keys(dataJ).map((el) => {
      highchartsData.push({
        name: el,
        data: dataJ[el].map(Number)
      })
    })
    
    
    Highcharts.chart('container', {
    
      title: {
        text: 'Solar Employment Growth by Sector, 2010-2016'
      },
    
      subtitle: {
        text: 'Source: thesolarfoundation.com'
      },
    
      yAxis: {
        title: {
          text: 'Number of Employees'
        }
      },
      legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'middle'
      },
    
    
      series: highchartsData,
    
      responsive: {
        rules: [{
          condition: {
            maxWidth: 500
          },
          chartOptions: {
            legend: {
              layout: 'horizontal',
              align: 'center',
              verticalAlign: 'bottom'
            }
          }
        }]
      }
    
    });
    #container {
      min-width: 310px;
      max-width: 800px;
      height: 400px;
      margin: 0 auto
    }
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/series-label.js"></script>
    <script src="https://code.highcharts.com/modules/exporting.js"></script>
    
    <div id="container"></div>

    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题