Python脚本通过手术替换另一个JSON字段

时间:2017-11-16 23:40:50

标签: python json

目前,我正在使用以下格式的大量JSON文件:

File00 ,时间 T1

{
  "AAA": {
    "BBB": {
      "000": "value0"
    },
    "CCC": {
      "111": "value1",
      "222": "value2",
      "333": "value3"
    },
    "DDD": {
      "444": "value4"
    }
}

现在我已经为子字段"DDD"提供了新的输入,我希望"批发"用以下内容替换它:

    "DDD": {
      "666": "value6",
      "007": "value13"
    }

因此,该文件将更改为:

File00 ,时间 T2

{
  "AAA": {
    "BBB": {
      "000": "value0"
    },
    "CCC": {
      "111": "value1",
      "222": "value2",
      "333": "value3"
    },
    "DDD": {
      "666": "value6",
      "007": "value13"
    }
}

在我遇到的情况下,许多文件类似于 File00 ,所以我努力创建一个可以处理的脚本特定目录中的所有文件,标识JSON字段DDD并用新内容替换它的内容。

如何在Python中执行此操作?

1 个答案:

答案 0 :(得分:1)

以下是我为每个文件采取的步骤:

  1. 阅读json
  2. 将其转换为Python dict
  3. 编辑Python字典
  4. 将其转换回json
  5. 将其写入文件
  6. 重复
  7. 这是我的代码:

    import json
    
    #list of files.
    fileList = ["file1.json", "file2.json", "file3.json"]
    
    for jsonFile in fileList:
        # Open and read the file, then convert json to a Python dictionary
        with open(jsonFile, "r") as f:
            jsonData = json.loads(f.read())
    
        # Edit the Python dictionary
        jsonData["AAA"]["DDD"]={"666": "value6","007": "value13"}
    
        # Convert Python dictionary to json and write to the file
        with open(jsonFile, "w") as f:
            json.dump(jsonData, f)
    

    另外,我从here.获取了遍历目录的代码你可能想要这样的东西:

    import os
    
    directory = os.fsencode(directory_in_str)
    
    for file in os.listdir(directory):
        filename = os.fsdecode(file)
        if filename.endswith(".json"): 
            fileList.append(filename)