2013-02-28 157 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)