You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON解析为Highcharts.js packedbubble类型的series数据

接口统计数据转Highcharts packedbubble配置实现

核心处理逻辑

  • 先预置全量HTTP方法的默认统计值,所有方法初始计数为0,避免原始数据里缺失某类方法时图表项不全
  • 遍历原始统计条目,按API名称做分组聚合,匹配到对应请求方法时,把统计值覆盖默认的0
  • 把聚合完成的分组结果转换成图表要求的数组结构,直接传入series配置项即可

具体实现代码(JavaScript)

// 原始输入数据
const rawData = [
  {api: 'Cars', method: 'GET', total: 3},
  {api: 'Cars', method: 'POST', total: 4},
  {api: 'Trucks', method: 'POST', total: 6},
  {api: 'Boats', method: 'GET', total: 6}
]

// 预置需要统计的全量请求方法,默认值为0
const DEFAULT_METHODS = ['GET', 'PUT', 'POST', 'DELETE']

// 按API名称分组聚合
const groupMap = {}
rawData.forEach(item => {
  // 如果分组里还没有当前API,先初始化全方法默认值
  if (!groupMap[item.api]) {
    groupMap[item.api] = DEFAULT_METHODS.map(method => ({
      name: method,
      value: 0
    }))
  }
  // 找到当前方法对应的项,替换统计值
  const targetMethodItem = groupMap[item.api].find(v => v.name === item.method)
  if (targetMethodItem) {
    targetMethodItem.value = item.total
  }
})

// 转换成Highcharts需要的series结构
const packedBubbleSeries = Object.entries(groupMap).map(([apiName, methodData]) => ({
  name: apiName,
  data: methodData
}))

输出结果说明

执行上述代码后得到的packedBubbleSeries结构如下,可直接传入Highcharts配置项使用:

[
  {
    name: 'Cars',
    data: [
      {name: "GET", value: 3},
      {name: "PUT", value: 0},
      {name: "POST", value: 4},
      {name: "DELETE", value: 0}
    ]
  },
  {
    name: 'Trucks',
    data: [
      {name: "GET", value: 0},
      {name: "PUT", value: 0},
      {name: "POST", value: 6},
      {name: "DELETE", value: 0}
    ]
  },
  {
    name: 'Boats',
    data: [
      {name: "GET", value: 6},
      {name: "PUT", value: 0},
      {name: "POST", value: 0},
      {name: "DELETE", value: 0}
    ]
  }
]

注:你给出的目标结构示例存在语法问题(数组内直接写键值对不符合JavaScript语法规范),上述输出是Highcharts packedbubble图表要求的标准series格式,传入即可正常渲染。

内容的提问来源于stack exchange,提问作者d_ringer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:15:46