想法:
我想將一個 JSON 物件添加到現有的 JSON 檔案中,但不覆寫檔案中的現有資料。
該uid-003物件應該從屬于uID現有uid-xxx條目之后。
問題:
沒有解決方法可以正常作業。該append()方法還會回傳錯誤:AttributeError: 'dict' object has no attribute 'append'。
當前代碼
Python代碼:
user = {
"uid-003": {
"username": "username-3",
"pinned": "pinned",
"created": {
"date": "DD/MM/YYYY",
"time": "HH:MM:SS"
},
"verified": {
"checked": False
}
}
}
with open("path/to/json", "r ") as file:
data = json.load(file)
temp = data['uID']
temp.append(user)
json.dump(data, file)
JSON 檔案:
{
"uID": {
"uid-001": {
"username": "username-1",
"pinned": false,
"created": {
"date": "20-12-2021",
"time": "21:13:39"
},
"verified": {
"checked": false
}
},
"uid-002": {
"username": "username-2",
"pinned": true,
"created": {
"date": "20-12-2021",
"time": "21:13:39"
},
"verified": {
"checked": false
}
}
}
}
uj5u.com熱心網友回復:
您需要做的就是將您的用戶字典添加到現有的“uID”鍵中。如果你更新一個用 r 打開的檔案并且你增加了檔案中的資料量,你需要在寫入之前尋找到開頭。這應該有幫助:
import json
THE_FILE = 'the_file.json'
user = {
"uid-003": {
"username": "username-3",
"pinned": "pinned",
"created": {
"date": "DD/MM/YYYY",
"time": "HH:MM:SS"
},
"verified": {
"checked": False
}
}
}
with open(THE_FILE, 'r ') as jfile:
j = json.load(jfile)
for k, v in user.items():
j['uID'][k] = v
jfile.seek(0)
json.dump(j, jfile, indent=4)
注意:在這種情況下,對user.items()的迭代并不是真正必要的,而是用于展示當用戶包含的詞典多于示例中的詞典時如何使用此模式
uj5u.com熱心網友回復:
AttributeError: 'dict' 物件沒有屬性 'append' Blockquote
這是非常明確的,您試圖在物件中附加一個元素,因為它是一個串列。
您需要做的是將您的 uID 從 obj 轉換為串列。如果您稍后需要操作此物件,它將簡化您的生活
另一種方式是:
user = {
"uid-003": {
"username": "username-3",
"pinned": "pinned",
"created": {
"date": "DD/MM/YYYY",
"time": "HH:MM:SS"
},
"verified": {
"checked": False
}
}
}
with open("path/to/json", "r ") as file:
data = json.load(file)
keys = user.keys()
data['uID'][keys[0]] = user[0]
json.dump(data, file)
uj5u.com熱心網友回復:
AttributeError: 'dict' 物件沒有屬性 'append'
您可以使用dict 更新
import json
with open('file.json', 'r ') as file:
data = json.load(file)
data['uID'].update(user)
file.seek(0)
json.dump(data, file, indent=4)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388480.html
