读写JSON文件:提取指定字段绑定单选按钮及删改需求技术问询
没问题,我来帮你一步步实现这些功能!下面我会用Python作为示例(你可以根据自己的开发语言调整核心逻辑),把每个需求拆解清楚:
1. 读取JSON文件并提取指定字段
首先我们要读取JSON文件,然后只保留每条记录里的name、date、time三个字段,过滤掉不需要的lat、lon、image_name:
import json # 读取JSON文件的通用函数 def load_json(file_path): with open(file_path, 'r', encoding='utf-8') as f: return json.load(f) # 提取需要的字段 def filter_required_fields(raw_data): filtered_records = [] for record in raw_data: filtered_records.append({ "name": record.get("name"), "date": record.get("date"), "time": record.get("time") }) return filtered_records # 调用示例 raw_data = load_json("your_records.json") target_records = filter_required_fields(raw_data)
假设你用Python的Tkinter做GUI,这里给出把前两条记录绑定到单选按钮的示例(其他GUI框架逻辑一致:提取对应记录的字段,拼接成按钮文本并绑定值):
import tkinter as tk root = tk.Tk() root.title("Record Selector") # 用StringVar管理单选按钮的选中状态 selected_name = tk.StringVar() # 绑定第一条记录到radio button1 if len(target_records) >= 1: record1 = target_records[0] radio1 = tk.Radiobutton( root, text=f"{record1['name']} | {record1['date']} {record1['time']}", variable=selected_name, value=record1["name"] ) radio1.pack(pady=5) # 绑定第二条记录到radio button2 if len(target_records) >= 2: record2 = target_records[1] radio2 = tk.Radiobutton( root, text=f"{record2['name']} | {record2['date']} {record2['time']}", variable=selected_name, value=record2["name"] ) radio2.pack(pady=5) root.mainloop()
3. 删除指定name的记录
遍历JSON数据,过滤掉目标name的记录后写回文件即可:
def delete_record(file_path, target_name): data = load_json(file_path) # 保留所有name不等于目标值的记录 updated_data = [r for r in data if r.get("name") != target_name] # 写回文件(indent=4让JSON格式更美观) with open(file_path, 'w', encoding='utf-8') as f: json.dump(updated_data, f, indent=4) # 调用示例:删除名为"Tom"的记录 delete_record("your_records.json", "Tom")
4. 更新指定name的记录
找到对应name的记录,修改指定字段后写回文件(假设name是唯一标识):
def update_record(file_path, target_name, new_info): data = load_json(file_path) for record in data: if record.get("name") == target_name: # 更新传入的字段(比如date和time) record.update(new_info) break # 找到目标记录后退出循环 # 写回文件 with open(file_path, 'w', encoding='utf-8') as f: json.dump(data, f, indent=4) # 调用示例:更新名为"Lisa"的记录的日期和时间 update_record("your_records.json", "Lisa", {"date": "2024-05-21", "time": "10:00"})
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

