首页 > 解决方案 > 如何替换 JSON 文件中的值?

问题描述

我想做的是:

with open ('gw.json') as json_file:
    data = json.load(json_file)

    new_gw = {
      'gw_id': f"{react.id}",
      'gw_prize': prize,
      'gw_status': "ongoing"
    }

  data.append(new_gw)

  with open('gw.json', 'w') as j:
    json.dump(data, j, indent=4)

  #some other stuff

  #when completed

  with open ('gw.json', 'r') as jsonFile:
    data = json.load(jsonFile)
    for x in data:
      if x['gw_id'] == f"{msgid}":
        x['gw_status'] = x['gw_status'].replace('ongoing', x['completed']) #change the value of 'gw_status' when completed
    with open ('gw.json', 'w') as jsonFile:
      json.dump(data, jsonFile)

我想做的是

[
    {
        "gw_id": "id",
        "gw_prize": "prize",
        "gw_status": "ongoing"
    }
{
        "gw_id": "904905768149590086",
        "gw_prize": "tdd",
        "gw_status": "ongoing" <== this one to be changed to "completed"
    }
]

但我写的代码不起作用。

标签: pythonjson

解决方案


代替

x['gw_status'] = x['gw_status'].replace('ongoing', x['completed'])

x['gw_status'] = 'completed'

更改此代码后,您的代码将如下所示

with open ('gw.json') as json_file:
    data = json.load(json_file)

    new_gw = {
      'gw_id': f"{react_id}",
      'gw_prize': prize,
      'gw_status': "ongoing"
    }

    data.append(new_gw)

    with open('gw.json', 'w') as j:
      json.dump(data, j, indent=4)

    #some other stuff

    #when completed

    with open ('gw.json', 'r') as jsonFile:
      data = json.load(jsonFile)
      for x in data:
        if x['gw_id'] == f"{msgid}":
          x['gw_status'] = 'completed' #change the value of 'gw_status' when completed
      with open ('gw.json', 'w') as jsonFile:
        json.dump(data, jsonFile)

运行代码之前的gw.json文件

[
  { "gw_id": "id", 
    "gw_prize": "prize", 
    "gw_status": "ongoing" 
    }
]

运行代码后的gw.json文件

[
  { "gw_id": "id", 
    "gw_prize": "prize", 
    "gw_status": "ongoing" 
    },
  {
    "gw_id": "904905768149590086",
    "gw_prize": "tdd",
    "gw_status": "completed"
  }
]

推荐阅读