Python:将JSON字符串写入文件。

时间:2013-02-28 14:45:30

标签: python json encoding

我有一个自定义对象,我已将其序列化为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)完美地返回,但是当它写入时,该文件是一个长字符串。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

只是做:

outfile.write(myEncoder().encode(jsonToEncode))

答案 1 :(得分:0)

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

json.dump(jsonToEncode, outfile, cls=myEncoder)