How do i rename json key using python?

Question:

I have json file, i need to rename folder_path key to backup_folder_path using python:

{
  "urn:adsk.wipprod:dm.lineage:smth": {
    "bim_manifest_urn": "urn:foo/bar/z",
    "gs_id": "foobar",
    "versions": {
      "1": "1"
    },
    "folder_path": "/foo/bar"
  },
  "urn:adsk.wipprod:dm.lineage:smth": {
    "bim_manifest_urn": "urn:foo/bar",
    "gs_id": "foobar1",
    "versions": {
      "1": "1"
    },
    "folder_path": "/foo/barŠ”"
  },

What I tried to do:


def edit_string_name():
    with open(r"smth.json", encoding="utf-8") as json_data:
        data = json.load(json_data)
        
        data = {'folder_path'}
        data['backup_folder_path'] = data.pop('folder_path')
        print(data)
    
if __name__ == '__main__':
    edit_string_name()

But nothing seems to happen.
When I tried to cycle through I got nonsense in terminal.

Asked By: SwAsKk

||

Answers:

This should do the job

def edit_string_name():
  with open("smth.json", "r+", encoding="utf-8") as file:
    data    = json.load(file)
    content = data["urn:adsk.wipprod:dm.lineage:smth"]

    content["backup_folder_path"] = content["folder_path"]
    content.pop("folder_path")
    data["urn:adsk.wipprod:dm.lineage:smth"] = content

    # Updating the file
    file.seek(0)
    file.write(json.dumps(data, indent=4))
    file.truncate()

edit_string_name()
Answered By: cheeeseburger