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

如何将自定义JSON对象转换为Highcharts Series数据格式?

自定义JSON转Highcharts Series格式实现

我需要将API返回的自定义JSON结构转换为Highcharts所需的Series数据格式,具体要求如下:

原始API返回JSON

[
    {
        "personId": "7b9b19a8-0052-4036-9d27-721371a3a077",
        "pid": "PID-2",
        "averageCycleTime": 1.28,
        "idealCycleTime": 1.28,
        "cycleDetails": [
            {
                "cycleId": "fdc074a0-e839-4a93-bdca-93562788fd8d",
                "visionCycleId": "2",
                "cycleDuration": 12.5,
                "actionDetails": null
            },
            {
                "cycleId": "85d5b577-306f-4d69-9649-732ddfc7b228",
                "visionCycleId": "1",
                "cycleDuration": 12.5,
                "actionDetails": null
            }
        ]
    },
    {
        "personId": "f2a2d7b1-e099-4f78-8bfd-804158d21b09",
        "pid": "PID-1",
        "averageCycleTime": 1.28,
        "idealCycleTime": 1.28,
        "cycleDetails": [
            {
                "cycleId": "5860c566-cbf9-4d36-be1e-21e27402e8c1",
                "visionCycleId": "1",
                "cycleDuration": 12.5,
                "actionDetails": null
            },
            {
                "cycleId": "7acf1cab-7d55-412e-8381-102d5aad0a3a",
                "visionCycleId": "2",
                "cycleDuration": 12.5,
                "actionDetails": null
            }
        ]
    }
]

目标Highcharts Series格式

series: [
    {
        name: 'Cycle-1',
        data: [{y:12.5, videoID : '85d5b577-306f-4d69-9649-732ddfc7b228'}, {y: 12.5, videoID : '5860c566-cbf9-4d36-be1e-21e27402e8c1'}],
    },
    {
        name: 'Cycle-2',
        data: [{y:12.5, videoID : 'fdc074a0-e839-4a93-bdca-93562788fd8d'}, {y: 12.5, videoID : '7acf1cab-7d55-412e-8381-102d5aad0a3a'}]
    }
]

映射规则

  • cycleDuration → Highcharts数据项的y值
  • cycleId → Highcharts数据项的videoID属性
  • visionCycleId → 对应Series的名称后缀(如visionCycleId为1则系列名为Cycle-1)

实现代码(JavaScript)

// 假设apiData是从接口获取的原始JSON数据
const apiData = [/* 原始API数据 */];

// 初始化一个对象来按visionCycleId分组数据
const cycleGroups = {};

// 遍历每个人的cycleDetails
apiData.forEach(person => {
    person.cycleDetails.forEach(cycle => {
        const cycleKey = `Cycle-${cycle.visionCycleId}`;
        // 如果分组不存在则创建
        if (!cycleGroups[cycleKey]) {
            cycleGroups[cycleKey] = {
                name: cycleKey,
                data: []
            };
        }
        // 添加转换后的数据项
        cycleGroups[cycleKey].data.push({
            y: cycle.cycleDuration,
            videoID: cycle.cycleId
        });
    });
});

// 将分组对象转换为数组,得到最终的series格式
const series = Object.values(cycleGroups);

console.log(series);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:15:29