CSV转JSON文件仅存最后一条数据及API POST仅传最后用户问题求助
解决CSV转JSON只保留最后一条数据的问题
嘿,我一眼就看出问题出在哪啦!咱们一步步来分析和解决:
问题根源
你现在的代码有两个关键问题:
- 文件写入模式错误:在
for row in datos循环里,你每次都用'w'模式打开JSON文件——这个模式会清空文件原有内容再写入,所以循环执行5次后,前面4次写入的内容全被最后一次覆盖了,最后文件里只剩最后一条用户数据。 - 数据结构不符合需求:你每次只把单行数据转成独立的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
相关产品推荐
相关产品推荐

