2015-11-26 91 views
1

添加新的值對象時,是不是JSON序列化的錯誤我有這樣一個JSON對象:類型錯誤:...被Python

{ 
    "people":[ 
     {"firstName":"Hasan Sait", "lastName":"Arslan", "email":"[email protected]"}] 
} 

我想通過Python作爲新值添加到這個JSON對象以下:

import json 

with open('data.json', 'r+') as json_file: 
     json_data = json.load(json_file) 
     people = json_data['people'] 
     people.append({"firstName":"Mehmet"}) 
     json_file.seek(0, 0) 
     json.dump(json_file, json_data) 
     json_file.truncate() 

我得到以下錯誤:TypeError: <open file 'data.json', mode 'r+' at 0x7f3f85a4b5d0> is not JSON serializable

在計算器中,有礦類似的問題問過,但我無法找到任何有益soluti從他們。

你能告訴我我哪裏錯了嗎?

+1

什麼是'...'? – alix

+0

<打開文件'data.json',模式'r +'在0x7f3f85a4b5d0> – yusuf

+1

您的'json'無效。 '「email」:「[email protected]」]}'這部分應該是''email':「[email protected]」}]' – alix

回答

2

json.dumps不寫入流,它只是取對象並返回JSON序列化的字符串。然後您可以將其保存到文件中。

import json 

with open('data.json', 'r+') as json_file: 
     json_data = json.load(json_file) 
     people = json_data['people'] 
     people.append({"firstName":"Mehmet"}) 
     json_file.seek(0, 0) 
     jsonString = json.dumps(json_data) 
     json_file.write(jsonString) 
     json_file.truncate() 
1

你剛剛得到json_file和json_data的順序錯誤,所以它告訴你,你不能使用filepointer作爲json。當使用json.dump時,該對象是第一個,而文件指針是第二個。