мій випадок використання полягав у збереженні декількох об’єктів json у файлі, і відповідь Марти мені дещо допомогла. Але для обслуговування мого випадку відповідь не була повною, оскільки вона буде перезаписувати старі дані кожного разу, коли зберігається новий запис.
Щоб зберегти кілька записів у файлі, потрібно перевірити старий вміст (тобто прочитати перед записом). Типовий файл , який містить дані JSON або мати list
або object
як корінь. Тому я вважав, що мій json-файл завжди має list of objects
і кожного разу, коли я додаю в нього дані, я просто спочатку завантажую список, додаю в нього свої нові дані та скидаю їх назад до записуваного лише примірника файлу ( w
):
def saveJson(url,sc): #this function writes the 2 values to file
newdata = {'url':url,'sc':sc}
json_path = "db/file.json"
old_list= []
with open(json_path) as myfile: #read the contents first
old_list = json.load(myfile)
old_list.append(newdata)
with open(json_path,"w") as myfile: #overwrite the whole content
json.dump(old_list,myfile,sort_keys=True,indent=4)
return "sucess"
новий файл json буде виглядати приблизно так:
[
{
"sc": "a11",
"url": "www.google.com"
},
{
"sc": "a12",
"url": "www.google.com"
},
{
"sc": "a13",
"url": "www.google.com"
}
]
Примітка: Необхідно мати файл з ім'ям file.json
з в []
якості вихідних даних для такого підходу до роботи
PS: не пов’язано з оригінальним запитанням, але цей підхід також можна було б покращити, попередньо перевіривши, чи існує наша запис (заснована на 1 / декількох клавішах), а потім додавати та зберігати дані. Дайте мені знати, якщо комусь потрібна ця перевірка, я додам до відповіді