Avatar ·

TypeError: Object of type is not JSON serializable

📁 python

尝试像这样将 Person 类的对象写入 json:

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()

出现错误:

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

我不会说这完全是糟糕的实践,只是需要明智地处理这件事,理解其潜在风险,不要盲目使用。

仔细想想,限制这种做法的主要原因如下:

  1. 显式优于隐式。你会失去对代码何时执行的控制,而这可能很重要。Python中的模块不仅可以在顶层导入,还可以在函数或方法内部导入,这意味着模块代码不会在应用启动时执行,而是在调用该函数并执行其中的import语句时执行。此外,导入该模块的函数可能不止一个,在庞大的应用中,哪个函数最先执行以及何时执行可能完全不清楚。

  2. 尽管模块代码在首次加载时只执行一次(实际上后续导入时甚至不会重新加载),但使其执行多次的情况并非不可能。

登录 以留下回答

博客