更改json值并创建新值

时间:2015-11-10 20:24:47

标签: python json

我正在尝试将新数据写入现有的json而没有运气。下面是我当前的json文件dat.dat:

{"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 个答案:

答案 0 :(得分:2)

  1. 在变量中加载文件的json数据。
  2. 更改变量。
  3. 再次在文件中写入json变量。
  4. 像这样更改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)
    

答案 1 :(得分:0)

您可以找到类似的问题here。 使用

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

更改积分值。您正在创建一个新变量points=data['users'][dat]['Points']并更改该变量的值,而不是数据中'points'的值