如何通过循环修改JSON数组格式,将API返回数据适配图表需求
数据转换实现方案
以下是符合你给出的键名映射规则的Python实现代码:
def transform_data(raw_data): # 构造根节点 transformed = { "name": raw_data["indice"], "children": [] } # 遍历处理所有行业板块 for sector in raw_data["data"]: processed_sector = { "name": sector["stock_sector_name"], "value": sector["sector_score"], "children": [] } # 处理板块下的个股数据 for stock in sector["stocks"]: processed_sector["children"].append({ "name": stock["stock_symbol"], "value": stock["stock_score"] }) transformed["children"].append(processed_sector) return transformed # 调用示例 if __name__ == "__main__": # 替换为实际从API获取的原始数据 raw_api_data = { "status": "success", "from": "DB", "indice": "KSE100", "data": [ { "stock_sector_name": "Tc", "sector_score": "0828", "stocks": [ {"stock_symbol": "TRG", "stock_score": 44}, {"stock_symbol": "SYS", "stock_score": 33} ] }, { "stock_sector_name": "OIL", "sector_score": "0828", "stocks": [ {"stock_symbol": "FFS", "stock_score": 44}, {"stock_symbol": "SMS", "stock_score": 33} ] } ] } result = transform_data(raw_api_data) print(result)
转换逻辑说明
- 根节点提取原始数据的
indice字段作为name,所有板块数据存入children数组 - 板块层级:
stock_sector_name映射为name,sector_score映射为value,个股列表stocks映射为children - 个股层级:
stock_symbol映射为name,stock_score映射为value
如果需要和你给出的示例格式一致,把板块层级的value键名改为points即可。
内容的提问来源于stack exchange,提问作者F Nasir
相关产品推荐
相关产品推荐

