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

如何将从URL获取的JSON字典转换为以Time为索引、Metric为列的结构

解决字典转换为指定Metric-Time结构的方案

别担心,这个转换需求其实很容易实现,我用Python给你写了一套清晰的处理逻辑,完全匹配你给出的输入输出格式:

第一步:明确输入数据结构

首先假设你从URL拉取的JSON数据解析后是这样的列表(对应你给出的示例输入):

raw_data = [
    {"time": "2021-01-28T00:00:00.000Z", "AdrActCnt": 1097896.0, "BlkCnt": 145.0, "BlkSizeByte": 190568423.0},
    {"time": "2021-01-29T00:00:00.000Z", "AdrActCnt": 1208741.0, "BlkCnt": 152.0, "BlkSizeByte": 199725189.0},
    {"time": "2021-01-30T00:00:00.000Z", "AdrActCnt": 1087755.0, "BlkCnt": 136.0, "BlkSizeByte": 177349536.0}
]

第二步:编写转换代码

def transform_metric_data(raw_data):
    if not raw_data:
        return {"metricData": {"metrics": [], "series": []}}
    
    # 提取所有Metric名称(排除time字段)
    metrics = [key for key in raw_data[0].keys() if key != "time"]
    
    # 构建series列表,处理time格式并按顺序生成values
    series = []
    for item in raw_data:
        # 把time格式从.000Z转为Z,匹配目标输出
        cleaned_time = item["time"].replace(".000Z", "Z")
        # 按metrics的顺序提取值并转为字符串
        values = [str(item[metric]) for metric in metrics]
        series.append({"time": cleaned_time, "values": values})
    
    # 组合成最终的目标结构
    return {
        "metricData": {
            "metrics": metrics,
            "series": series
        }
    }

# 调用函数并打印结果
result = transform_metric_data(raw_data)
print(result)

代码说明

  • Metric提取:从第一个数据条目中自动获取所有非time的键作为metrics列表,这样即使后续新增Metric,代码也能自动适配,不用手动修改。
  • Time格式处理:把输入中的.000Z后缀替换为Z,完全匹配你给出的目标输出格式。
  • Values顺序:严格按照metrics的顺序生成values列表,保证每个time对应的数值和Metric一一对应。
  • 空数据兼容:加入了空数据判断,避免原始数据为空时出现索引错误。

运行这段代码后,你就能得到和示例完全一致的目标输出结构啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:37:29