我有一个自定义对象,我已将其序列化为JSON
数据。序列化后,我将数据写回JSON
文件。这似乎有效,但是我写回文件的JSON现在是一个字符串(即它以"
开头,以"
结尾。)
因此,当我尝试加载要解析的新文件时,我的解析器会发现它是一个字符串并且我得到了错误:
TypeError: string indices must be integers
我通过执行以下操作来序列化对象:
class myEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
然后调用此类:
with open('updatedMapData.json', 'w') as outfile:
json.dump(myEncoder().encode(jsonToEncode) , outfile)
myEncoder().encode(data)
完美地返回,但是当它写入时,该文件是一个长字符串。
我该如何解决这个问题?
答案 0 :(得分:1)
只是做:
outfile.write(myEncoder().encode(jsonToEncode))
答案 1 :(得分:0)
json.dump的第一个参数是你想要转换为JSON的对象,但你可以将你的类作为cls
参数传递,所以你需要像这样调用它:
json.dump(jsonToEncode, outfile, cls=myEncoder)