2017-09-19 11 views
0

私はインターネットを検索してきましたが、PythonでJSONを使用してカスタムオブジェクトをエンコードしてデコードする簡単な例が見つかりませんでした。カスタムオブジェクトのJSONシリアル化

のは、私は以下のクラスがあるとしましょう:オブジェクト

class Test: 
    def __init__(self, name=None, grade=None): 
     self.name = name 
     self.grade = grade 

をしても、テストのリストを持っている:

t1 = Test("course1", 80) 
t2 = Test("course2", 90) 

list_of_tests = [t1, t2] 

どのように使用して、クラスTestとオブジェクトlist_of_tests をシリアル化することができますJSON?私はそれをファイルに書き出し、Pythonを使ってファイルから読み込めたいと思っています。

答えて

0

ここで行う最も簡単なことは、オブジェクトから辞書のリストを手動で作成することです。その後、JSON関数に直接渡すことができます。

data = [{'name': x.name, 'grade': x.grade} for x in list_of_tests] 
with open('output.json', 'w') as out: 
    json.dump(data, out) 

し、それをリードバック:

with open('output.json') as inp: 
    data = json.load(inp) 
    list_of_tests = [Test(x['name'], x['grade']) for x in data] 
+0

はまだupvoteすることはできませんが、ありがとう!今すぐ入手! – Infected

0

認識できないオブジェクトをダンプする方法を制御できます(デフォルト= converter_function)。それが有効なJSONであるためには、必要なフィールドと、読み込み専用のタグフィールドを明示的に返さなければなりません。

次に、loaded()に渡されたプロセスをobject_hookとして元に戻すための別の変換機能があります。

関連する問題