Avatar ·

TypeError: Object of type is not JSON serializable

📁 بايثون

أحاول كتابة كائن من الفئة 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 ليس فقط على المستوى الأعلى، ولكن أيضًا داخل دالة أو method، مما يعني أن كود الوحدة سيتم تنفيذه ليس أثناء بدء التطبيق، بل أثناء تشغيل هذه الدالة وتنفيذ تعليمة import داخلها. قد يكون هناك أكثر من دالة تستورد الوحدة، وأي منها ومتى يتم تنفيذها أولاً في تطبيقك الضخم قد يكون غير واضح تمامًا.

تسجيل الدخول لترك إجابة

المدونات