如何在FastAPI中为上传的JSON文件添加索引ID
如何在FastAPI中为上传的JSON文件添加索引ID
嗨,我来帮你搞定这个问题!首先得提个小细节:你想要的那个最终格式其实不是标准JSON哦——JSON数组里不能用1:、2:这种键值对写法,正确的做法要么把整个结构转成JSON对象(用数字作为键),要么给数组里的每个元素新增一个id字段。下面给你两种符合规范的实现方式,都能满足你后续计算和展示的需求~
方案一:将数组转为带数字索引的JSON对象
这种方式适合你需要通过索引快速定位单个元素的场景,处理后的结果是标准的JSON对象:
FastAPI代码实现
from fastapi import FastAPI, UploadFile, File import json app = FastAPI() @app.post("/add-index-as-keys/") async def add_index_as_keys(file: UploadFile = File(...)): # 读取上传的JSON文件内容 file_content = await file.read() # 解析成Python列表 original_data = json.loads(file_content) # 生成带1开始索引的字典,转成JSON兼容的格式 indexed_data = {str(index + 1): item for index, item in enumerate(original_data)} # 返回处理后的结果,也可以在这里写入文件保存 return {"processed_data": indexed_data}
处理后的结果示例
{ "1": { "B4": 14, "B5": 12 }, "2": { "B4": 58, "B5": 54 }, "3": { "B4": 26, "B5": 65 } }
方案二:给数组每个元素新增id字段
如果你想保留原有的数组结构,只是给每个数据项加上唯一索引,这种方式更合适:
FastAPI代码实现
from fastapi import FastAPI, UploadFile, File import json app = FastAPI() @app.post("/add-id-to-items/") async def add_id_to_items(file: UploadFile = File(...)): file_content = await file.read() original_data = json.loads(file_content) # 给每个元素插入id字段,索引从1开始 indexed_data = [{"id": index + 1, **item} for index, item in enumerate(original_data)] return {"processed_data": indexed_data}
处理后的结果示例
[ { "id": 1, "B4": 14, "B5": 12 }, { "id": 2, "B4": 58, "B5": 54 }, { "id": 3, "B4": 26, "B5": 65 } ]
两种方式都完全符合JSON规范,你可以根据后续计算和展示的需求来选:如果需要快速通过索引查找元素,选方案一;如果要保持数组的顺序性,选方案二就好啦~
备注:内容来源于stack exchange,提问作者Balamurugan S
相关产品推荐
相关产品推荐

