2015-11-10 21 views
1

我正在嘗試將新數據寫入現有的json,但沒有運氣。我的繼承人目前的JSON文件dat.dat:更改json值並製作新的

{"users": {"tryhard_cupcake": {"Points": 0, "Time Joined": 9938}}} 

,如何我解析它:

def updateUsers(chan): 
    j = urllib2.urlopen('http://tmi.twitch.tv/group/user/' + chan + '/chatters') 
    j_obj = json.load(j) 
    with open('dat.dat', 'r+w') as data_file: 
      data = json.load(data_file) 
     for dat in data['users']: 
      if dat in j_obj['chatters']['moderators']: 
       points=data['users'][dat]['Points'] 
       json.dump(points + 50, data_file) 

updateUsers('tryhard_cupcake') 

,我期待到50點添加到用戶,而是它只是附加了50〜文件的結尾。輸出是這樣的:

{"users": {"tryhard_cupcake": {"Points": 0, "Time Joined": 9938}}} 
50 

我該如何去追加新的數據給用戶並修改它?我期待這樣的結果:

{"users": {"tryhard_cupcake": {"Points": 50, "Time Joined": 9938}}} 
+2

所有'json.dump'確實是寫無論你的參數是你'data_file'。你想要的是用'data ['users'] [dat'] ['Points'] + = 50'替換你的實際數據,然後用你的新詞典覆蓋你的整個json文件 –

+1

[可以修改JSON鍵值Python](http://stackoverflow.com/questions/33591231/modifying-json-key-values-in-python) – Harwee

回答

2
  1. 在變量文件的加載JSON數據的「點」的價值。
  2. 更改變量。
  3. 再次在文件中寫入json變量。

更改updateUsers這樣的:

def updateUsers(chan): 
    j = urllib2.urlopen('http://tmi.twitch.tv/group/user/' + chan + '/chatters') 
    j_obj = json.load(j) 
    with open('dat.dat') as data_file: 
      data = json.load(data_file) 
     for dat in data['users']: 
      if dat in j_obj['chatters']['moderators']: 
       data['users'][dat]['Points'] += 50 
    # write to file 
    with open('dat.dat', 'w') as out_file: 
     json.dump(data, out_file) 
+0

給出一個ValueError:沒有JSON對象可以解碼 –

0

您可以在類似問題here中找到相似的問題。 使用

  data['users'][dat]['Points']=50 

改變點的價值。你是一個新的變量points=data['users'][dat]['Points']和改變值O變量,而不是在數據