Python:JSON将对象添加到列表中

时间:2017-12-28 14:22:16

标签: python json list object

我的程序存在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)  

1 个答案:

答案 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,你让我走的正确!