python - 更新现有 JSON 文件
问题描述
在运行我的代码时,我试图通过添加额外的数据(package_id)来更新现有的 JSON 文件。这是现有的 json 内容:
{
"1": {
"age": 10,
"name": [
"ramsi",
"jack",
"adem",
"sara",
],
"skills": []
}
}
我想插入一个新包,应该是这样的:
{"1": {
"age": 10,
"name": [
"ramsi",
"jack",
"adem",
"sara",
],
"skills": []
} "2": {
"age": 14,
"name": [
"maya",
"raji",
],
"skills": ["writing"]
}
}
问题是当我添加它添加的新数据时 - > ({) 所以(一个顶级值)被添加了两次,这是 JSON 标准所不允许的
{"1": {
"age": 10,
"name": [
"ramsi",
"jack",
"adem",
"sara",
],
"skills": []
}} {"2": {
"age": 14,
"name": [
"maya",
"raji",
],
"skills": ["writing"]
}
}
这是我添加新的(package_id)的代码:
list1[package_id] = {"age": x, "name": y, "skills": z}
ss = json.dumps(list1, indent=2)
data = []
with open('file.json', 'r+') as f:
data = json.loads(f.read())
data1 = json.dumps(data, indent=2)
f.seek(0)
f.write(data1)
f.write(ss)
f.truncate()
我两次写入文件,因为如果我没有存储现有内容并再次写入,那么它将删除旧数据并仅保留 package_id 编号 2
解决方案
它不是那样工作的。您不能通过附加另一个 JSON 记录来添加到 JSON 记录。JSON 文件总是只有一个对象。您需要修改该对象。
with open('file.json','r') as f:
data = json.loads(f.read())
data[package_id] = {'age':x, 'name':y, 'skills':z}
with open('file.json','w') as f:
f.write(json.dumps(data,indent=2))
推荐阅读
- unit-testing - Redux Saga:抛出和停止生成器
- wikidata - 在 Wikidata 中导入不推荐使用的语句
- javascript - React - componentDidUpdate() 无法找到 render() 方法渲染的 DOM 对象
- python-3.x - 如何在pandas数据帧中将批量大小超过指定阈值的1(ON)标志切换为0?
- php - 在使用 PHP 构建的网站上构建 DIV 布局
- java - 封装形式不同
- angular - 检测哪些是用户的原始位置
- css - Mat-form-field 在不同的浏览器中具有不同的高度
- c# - c# Filter int for specific parameter
- swift - 登录应用程序时验证 inAppPurchase 订阅帐户还有哪些其他凭据