Avatar ·

TypeError: Object of type is not JSON serializable

📁 Python

Ich versuche, ein Person-Objekt so in JSON zu schreiben:

def postUserToJson(user):    fileName = str(user.FullName) + "" - "" + str(user.Id)    file = open(pathUsers + fileName + "".json"", ""w"", encoding=""utf-8"")    json.dump(user, file, ensure_ascii=False)    file.close()

Ich erhalte einen Fehler:

TypeError: Object of type 'Person' is not JSON serializab
Avatar ·

Ich würde nicht sagen, dass dies direkt eine schlechte Praxis ist, man muss nur mit Bedacht an die Sache herangehen, verstehen, was die Konsequenzen sind, und es nicht gedankenlos verwenden.

Die Gründe, dies einzuschränken, sind meiner Meinung nach folgende:

  1. Explicit ist besser als implicit. Sie verlieren die Kontrolle darüber, wann genau dieser Code ausgeführt wird, und das kann wichtig sein. Module in Python können nicht nur auf der obersten Ebene importiert werden, sondern auch innerhalb einer Funktion oder Methode. Das bedeutet, dass der Code des Moduls nicht beim Start der Anwendung ausgeführt wird, sondern beim Aufruf einer solchen Funktion und der Ausführung der import-Anweisung darin. Es kann zudem mehrere Funktionen geben, die das Modul importieren, und welche davon und wann sie in Ihrer riesigen Anwendung zuerst ausgeführt wird, kann völlig unklar sein.

Anmelden um eine Antwort zu hinterlassen

Blogs