我的程序存在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:额外数据:
编辑我的代码:
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)
答案 0 :(得分: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,你让我走的正确!