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

3 投票
2 回答
787 浏览
提问于 2025-04-17 17:27

我有一个自定义对象,我把它转换成了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

json.dump的第一个参数是你想要转换成JSON格式的对象,但你可以把你的类作为cls参数传进去,所以你需要这样调用它:

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

只需要这样做:

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

撰写回答