关于python:为什么这个类不是JSon可序列化的?

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。