Why is this class not JSon serializable?
本问题已经有最佳答案,请猛点这里访问。
我在python 3.5中有这个类:
1 2 3 4 5 | class DataPoint(object): def __init__(self, time, value): self.time = time self.value = value |
当我尝试从一个实例创建一个JSON时,做:
1 | json.dumps( intance_of_datapoint ) |
我得到错误:
1 | TypeError: < DataPoint object at 0x0123 > is not JSon Serializable |
所以我尝试改进类重写repr方法,如下所示:
1 2 3 4 5 6 7 8 9 10 | class DataPoint(object): def __init__(self, time, value): self.time = time self.value = value def __str__(self): return json.dumps(self.__dict__) __repr__ = __str__ |
通过这样做,我得到:
1 | TypeError: {"value":52.29,"time":1} is not JSon serializable. |
你们能帮我不明白为什么吗?我在这里迷路了。
您将需要在python dict中转换您的实例,然后可以将该dict转储到json.dumps中(instance_dict)。因为JSON有自己的数据类型,而Python用户定义的类不能序列化为JSON。