【发布时间】:2018-12-24 14:53:48
【问题描述】:
在 python 中编码时出现错误:“myObject 类型的对象不是 JSON 可序列化的”
我尝试使用我在其他问题中看到的一些解决方案,但我没有发现我的代码与这些问题中的代码有很多相似之处,因此我发现很难在我的代码中调整解决方案。
我的脚本的一部分如下。错误发生在第一个块的最后一行:
import json
import os
from my_object import myObject
for a in A_set:
if os.path.isfile(filename):
with open(filename, 'r') as f:
json_data = json.load(f)
object_name = myObject.from_json(json_data)
else:
object_name = myObject(a)
object_name.property_A = property_A
object_name.property_C = []
object_name.property_C_add_elements(var)
with open(filename, 'w') as f:
json.dump(object_name.to_json(), f)
在另一个 python 文件中定义了“myObject”类,其中还有方法“to_json()”,我在产生错误的代码行中调用了该方法。
class myObject:
def __init__(self, name):
self.name = name
self.property_A = property_A
self.property_B = property_B
self.property_C = []
def property_C_add_elements(self, var):
self.property_C.append(var)
def to_json(self):
return {
'Name': self.name,
'property A': self.property_A,
'property B': self.property_B,
'property C': self.property_C
}
@classmethod
def from_json(cls, jason_data):
object_name = myObject(jason_data['property A'])
property_B = myObject(jason_data['property B'])
c_list = []
for var in jason_data['property C']:
c_list.append(myObject(var))
object_name.property_B = property_B
object_name.property_C = c_list
return object_name
如果我能找到解决这个问题的方法,我会很高兴。提前致谢。
【问题讨论】:
-
根据[SO]: How to create a Minimal, Complete, and Verifiable example (mcve),该问题缺少一些必需的数据。例如,所有文件都不应编译:
for a in A_set:、self.property_A = property_A。请更正问题并添加堆栈跟踪。并编辑问题,不要添加 cmets。 -
嗯,这是一个很长的脚本,它正在从 excel 文件中读取数据并希望将其转换为 json 格式。生成一个最小且完整的代码有点困难,但我会试一试。然而,第二个代码块是我的第二个文件的完整代码。感谢您的回复。
标签: python json serialization