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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:43:11