Ich versuche, ein Telefonbuch in Python zu erstellen, und ich möchte alle Kontakte in einer Datei speichern, codiert als JSON, aber wenn ich versuche, die exportierten JSON-Daten aus der Datei zu lesen, ich einen Fehler:JSON-Daten aus Python-Objekten exportieren
Extra data: line 1 column 103 - line 1 column 210 (char 102 - 209)
(Es funktioniert gut, wenn ich nur ein Objekt in "list.txt" haben)
Dies ist mein Code:
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
Die Ausgang in list.txt:
"{\n \"phonenumber\": \"+000000000\", \n \"name\": \"Ted\", \n \"address\": \"Somewhere\"\n}"
Nun, wenn ich ein anderes Objekt hinzufügen, können sie nicht die JSON-Daten lesen mehr. Wenn meine Art, es zu tun, falsch ist, wie sonst sollte ich den JSON-Code jedes Objekts in einer Klasse exportieren, damit es bei Bedarf wieder gelesen werden kann?
Vielen Dank! Wenn ich auch eine Funktion hinzufügen möchte, die einen Kontakt löscht, also die JSON-Daten aus list.txt löscht (pop), was sollte mein Ansatz sein? Ich denke, ich weiß, wie man ein Element wie "Telefonnummer" entfernt, aber nicht, wie man das ganze Objekt entfernt (zum Beispiel alles über Joe entfernend) – C10H15N
Sicher, das ist ziemlich einfach mit der Controller-Struktur. Fügen Sie der Klasse eine Funktion hinzu, um den Kontakt aus der Liste zu entfernen: 'def delete_contact (self, contact): self.contacts.remove (Kontakt)' Und am Ende der Datei löschen Sie "Joe": 'contact_controller.delete_contact (joe) contact_controller.save_to_file()' – CamJohnson26