クラス デコレータを使用して Python でカスタム オブジェクトを dict にエンコードし、結果の dict に引数として含める必要がある変数の名前を提供する方法を探しています。json.dumps(custom_object_dict)
dict を使用すると、JSON への変換に使用できます。
言い換えれば、アイデアは次の@encoder
クラスデコレータを持つことです:
@encoder(variables=['firstname', 'lastname'], objects=['professor'], lists=['students'])
class Course(Object):
def __init__(self, firstname, lastname, professor, students):
self.firstname = firstname
self.lastname = lastname
self.professor = professor
self.students = students
#instance of Course:
course = Course("john", "smith", Professor(), [Student(1), Student(2, "john")])
このデコレーターを使用すると、次のようなことができます。
オプション A:
json = json.dumps(course.to_dict())
オプション B:
json = json.dumps(course.dict_representation)
...またはそのようなもの
問題は、このエンコーダーの書き方です。実際の要件は次のとおりです。
- エンコーダーは、デコレーターを介して提供される変数のみをエンコードする必要があります
- エンコーダーは他のオブジェクトをエンコードできる必要があります (例: 教授クラスにデコレータもある場合、コース内の教授)
@encoder
- また、他のオブジェクトのリストをエンコードできる必要があります (例: コース内の学生、そのクラスの学生も
@encoder
デコレータにする必要があることをカウント)
私はそれを行うさまざまな方法(json.JSONEncoderから継承するクラスの作成を含む)を調査しましたが、私が考えていたことを正確に行うものはありませんでした。誰でも私を助けることができますか?
前もって感謝します!