我想在python中创建一个电话簿,并且我想将所有联系人保存在文件中,编码为JSON,但是当我尝试从文件中读取导出的JSON数据时,我得到一个错误:从Python对象导出JSON数据
Extra data: line 1 column 103 - line 1 column 210 (char 102 - 209)
(它正常工作时,我在 “LIST.TXT”只有一个对象)
这是我的代码:
class contacts:
def __init__(self, name="-", phonenumber="-", address="-"):
self.name= name
self.phonenumber= phonenumber
self.address= address
self.jsonData=json.dumps(vars(self),sort_keys=False, indent=4)
self.writeJSON(self.jsonData)
def writeJSON(self, jsonData):
with open("list.txt", 'a') as f:
json.dump(jsonData, f)
ted=contacts("Ted","+000000000","Somewhere")
with open('list.txt') as p:
p = json.load(p)
print p
的输出在LIST.TXT:
"{\n \"phonenumber\": \"+000000000\", \n \"name\": \"Ted\", \n \"address\": \"Somewhere\"\n}"
现在,如果我添加另一个对象,它无法读取JSON数据了。如果我的做法是错误的,我应该如何导出类中每个对象的JSON代码,以便在需要时可以回读它?
谢谢!如果我还想添加一个删除联系人的函数,这意味着它从list.txt中删除(弹出)JSON数据,这应该是我的方法吗?我想我知道如何删除像“电话号码”这样的元素,但不知道如何删除整个对象(例如,删除有关'Joe'的所有内容) – C10H15N
当然,控制器结构非常简单。向类中添加一个函数以从列表中删除联系人: 'def delete_contact(self,contact):self.contacts.remove(contact)' 并在文件结尾处删除“Joe”: 'contact_controller.delete_contact(joe)contact_controller.save_to_file()' – CamJohnson26