2013-02-28 127 views
3

我有一个自定义对象,我已经序列化为JSON数据。序列化后,我将数据写回JSON文件。这似乎是行得通的,但是我写回文件的JSON现在是一个字符串(即它以"开始并以"结尾)。Python:将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)回报完美,但是当它写道,T他的文件是一个很长的字符串。

我该如何解决这个问题?

+1

请问您可以包括一些示例输入和输出? – 2013-02-28 14:46:38

+2

看起来像你编码它(它返回一个JSON字符串),然后把它放到'dump'中,它再次编码它,既然它是一个JSON字符串,你就可以在JSON字符串中得到JSON。 – 2013-02-28 14:52:55

回答

1

只要做到:

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

那样json.dump的第一个参数是要转换成JSON对象,但你可以通过你的类作为cls参数,所以你需要调用它是这样的:

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