如何将自定义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
相关产品推荐
相关产品推荐

