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

如何在JSON列表中追加值?解决服务器重启后数据覆盖问题

解决JSON文件列表追加覆盖问题

你的核心问题是没有正确将新值追加到已读取的JSON数据列表中,且代码逻辑存在多处疏漏,导致每次写入都会覆盖原有内容。以下是问题分析和修正方案:

原代码的问题

  • 读取JSON后,仅打印数据但未将新获取的heartrate和dt_string追加到对应列表
  • 异常分支初始化的data用[None]占位,未直接写入首次获取的有效值
  • 最终写入文件时,未确保data是更新后的完整数据

修正后的代码

import json

def perform_all():
    # 模拟返回心率和时间,实际替换为你的业务逻辑
    return 73.44, "01/22/2023 12:00:00"

# 初始化默认数据结构
data = {
    "heart_rate": [],
    "Experiment_time": []
}

# 读取已有文件(如果存在)
try:
    with open('Accounts.json', 'r') as fp:
        data = json.load(fp)
except FileNotFoundError:
    print("文件不存在,将创建新文件")
except json.JSONDecodeError:
    print("文件格式错误,将重新初始化数据")

# 获取新值并追加到对应列表
heartrate, dt_string = perform_all()
data["heart_rate"].append(heartrate)
data["Experiment_time"].append(dt_string)

# 写入更新后的数据
with open('Accounts.json', 'w') as fp:
    json.dump(data, fp, indent=4)

关键逻辑说明

  1. 先读取再更新:优先读取已有JSON文件的数据,确保原有列表内容不丢失
  2. 细化异常处理:区分文件不存在和JSON格式错误的场景,避免捕获所有异常导致隐藏问题
  3. 直接追加列表:将新获取的心率和时间直接追加到对应key的列表中,而非重新创建空列表
  4. 统一写入逻辑:无论文件是否存在,最后都将更新后的完整data写入文件,保证数据持久化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:35:30