2017-12-28 14 views
-1

私のプログラムでJSONに問題があります。 私はPythonでインターフェイスを持つオブジェクトを作成します。 JSONによって生成されたファイルにこのオブジェクトのリストを保存します。Python:JSONリストにオブジェクトを追加する

JSONはこの可能:

[ 
    { 
     "__class__": "Regle", 
     "apartirde": "", 
     "prefix": "", 
     "postfix": "", 
     "extension": "", 
     "amorce": "", 
     "nomfichier": "" 
    } 
] 
[ 
    { 
     "__class__": "Regle", 
     "apartirde": "", 
     "prefix": "", 
     "postfix": "", 
     "extension": "", 
     "amorce": "", 
     "nomfichier": "" 
    } 
] 

しかし、私はそのような何かをしたい:

[ 
    { 
     "__class__": "Regle", 
     "apartirde": "", 
     "prefix": "", 
     "postfix": "", 
     "extension": "", 
     "amorce": "", 
     "nomfichier": "" 
    }, 
    { 
     "__class__": "Regle", 
     "apartirde": "", 
     "prefix": "", 
     "postfix": "", 
     "extension": "", 
     "amorce": "", 
     "nomfichier": "" 
    } 
] 

私はこのリストを読みたいとき、JSONは私に、このエラー出力しますので:

json.decoder.JSONDecodeError: Extra data:

書き込み用にコードを編集:

読むために
def seria(self, obj): 
    if isinstance(obj, class_Regle.Regle): 
     return {"__class__": "Regle", 
       "apartirde": obj.apartirde, 
       "prefix": obj.prefix, 
       "postfix": obj.postfix, 
       "extension": obj.extension, 
       "amorce": obj.amorce, 
       "nomfichier": obj.nomfichier} 
    raise TypeError(repr(obj) + " n'est pas sérialisable !") 

def sauvegarder(self): 
    with open(self.fichier,'a', encoding='utf-8') as mon_fichier: 
      mon_fichier.json.dump(self.regle, mon_fichier, indent=4, default=self.seria) 

マイコード:

def charger(self): 
     with open(self.fichier, 'r', encoding="utf-8") as mon_fichier: 
      data =json.load(mon_fichier, object_hook=self.deseria) 

def deseria(self, obj_dict): 
     if obj_dict["__class__"] == "Regle": 
      obj = class_Regle.Regle(obj_dict["apartirde"], obj_dict["prefix"],obj_dict["postfix"],obj_dict["extension"],obj_dict["amorce"],obj_dict["nomfichier"]) 
      self.regle.append(obj) 
+4

関連するコードをご記入ください – Noa

+0

@Noa完了しました:) – jojoboue

+0

なぜファイルを追加モードで開きますか? jsonファイルをどのようにしたいのかを表すオブジェクト(この場合は辞書のリスト)を構築した後で、単一の 'json.dump'を実行する必要があります。 –

答えて

0
def sauvegarder(self): 
    with open(self.fichier, 'r', encoding="utf-8") as mon_fichier: 
     data =json.load(mon_fichier, object_hook=self.deseria) 
    with open(self.fichier,'w', encoding='utf-8') as mon_fichier: 
      json.dump(self.regle, mon_fichier, indent=4, default=self.seria) 

こんにちは、これは私の問題の解決策です。 Patrick Haughさん、ありがとうございました。

関連する問題