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

3
我有一个自定义对象,已经序列化成 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) 返回的很完美,但当它写入文件时,文件变成了一个长字符串。

我该如何解决这个问题?


1
请问您能否提供一些示例输入和输出? - Martijn Pieters
2
看起来你对它进行了编码(返回一个JSON字符串),然后将其放入“dump”中,再次进行编码,由于它已经是一个JSON字符串,所以你得到了一个JSON字符串内部的JSON。 - Tom van der Woerdt
2个回答

1

只需这样做:

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

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接