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

CSV转JSON文件仅存最后一条数据及API POST仅传最后用户问题求助

解决CSV转JSON只保留最后一条数据的问题

嘿,我一眼就看出问题出在哪啦!咱们一步步来分析和解决:

问题根源

你现在的代码有两个关键问题:

  1. 文件写入模式错误:在for row in datos循环里,你每次都用'w'模式打开JSON文件——这个模式会清空文件原有内容再写入,所以循环执行5次后,前面4次写入的内容全被最后一次覆盖了,最后文件里只剩最后一条用户数据。
  2. 数据结构不符合需求:你每次只把单行数据转成独立的JSON对象,但不管是保存文件还是调用POST接口,你需要的应该是包含所有用户的JSON数组,而不是单个对象。

修改后的代码

import json
import csv

jsonFile = r'Prueba.json'
# 先创建一个空列表,用来存储所有用户数据
all_users = []

with open('file1.csv', newline='') as csvfile:
    datos = csv.DictReader(csvfile)
    for row in datos:
        # 把每行的用户字典添加到列表里
        all_users.append(row)
        # 打印单个用户数据(和你原来的效果一致)
        print(json.dumps(row, indent=4, skipkeys=True))

# 循环结束后,一次性把整个用户列表转成JSON并写入文件
with open(jsonFile, 'w', encoding='utf-8') as jsonf:
    json.dump(all_users, jsonf, indent=4, ensure_ascii=False)

关键改动说明

  • 新增了all_users列表,用来收集所有CSV行的字典数据,确保不会丢失任何一条记录。
  • 把文件写入操作移到了循环外面:这样只打开一次文件,用'w'模式写入整个用户数组,不会出现覆盖问题。
  • 使用json.dump()直接把列表写入文件(比先dumps再write更高效),同时加上ensure_ascii=False保证中文等非ASCII字符正常显示。

关于POST接口的问题

之前你调用POST接口只上传最后一个用户,也是因为每次可能只传了单个用户对象。现在用这个包含所有用户的JSON数组作为请求体,就能一次性上传全部5条用户数据啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:40:18