我正尝试创建类实例的JSON字符串表示形式并且遇到困难。比方说,类是建立这样的:将类实例序列化为JSON
class testclass:
value1 = "a"
value2 = "b"
调用到json.dumps作出这样的:
t = testclass()
json.dumps(t)
它失败并告诉我,识别TestClass不是JSON序列化。
TypeError: <__main__.testclass object at 0x000000000227A400> is not JSON serializable
我也用泡菜模块尝试:
t = testclass()
print(pickle.dumps(t, pickle.HIGHEST_PROTOCOL))
,它给类实例的信息,但类实例的不是一个序列化的内容。
b'\x80\x03c__main__\ntestclass\nq\x00)\x81q\x01}q\x02b.'
我在做什么错?
http://stackoverflow.com/questions/2343535/easiest-way-to-serialize-a-simple-class-object-with-simplejson – delicateLatticeworkFever 2012-04-20 19:10:28
使用一行,'S = json.dumps(OBJ ,default = lambda x:x .__ dict __)',序列化对象的实例变量('self.value1','self.value2',...)。它是最简单也是最直接的方式。它会序列化嵌套的对象结构。当任何给定对象不是可直接序列化时,调用'default'函数。你也可以看看我的答案。我发现流行的答案不必要的复杂,这可能是相当长的一段时间。 – codeman48 2017-12-13 07:25:02
您的'testclass'没有'__init __()'方法,因此所有实例将共享类语句中定义的相同的两个类属性('value1'和'value2')。你是否理解一个类和一个实例之间的区别? – martineau 2018-01-30 02:44:33