3

我有一个已序列化为JSON数据的自定义对象。序列化后,我将数据写回JSON文件。这似乎有效,但是我写回文件的 JSON 现在是一个字符串(即它以 a 开头并以 a"结尾")。

因此,当我尝试将新文件加载到被解析时,我的解析器认为它是一个字符串并且我得到了错误:

 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)完美返回,但是当它写入时,文件是一个长字符串。

我该如何解决这个问题?

4

2 回答 2

1

做就是了:

outfile.write(myEncoder().encode(jsonToEncode))
于 2013-02-28T14:55:47.760 回答
0

json.dump 的第一个参数是您要转换为 JSON 的对象,但是您可以将您的类作为cls参数传递,因此您需要这样调用它:

json.dump(jsonToEncode, outfile, cls=myEncoder)
于 2013-02-28T15:03:39.687 回答