-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)
関連するコードをご記入ください – Noa
@Noa完了しました:) – jojoboue
なぜファイルを追加モードで開きますか? jsonファイルをどのようにしたいのかを表すオブジェクト(この場合は辞書のリスト)を構築した後で、単一の 'json.dump'を実行する必要があります。 –