首页 > 解决方案 > Python3 更新 & 写入 JSON 值

问题描述

我是编写 Python 的新手,遇到了一些障碍。我正在尝试将新信息添加到以下示例 json 文件

{
  "data1": {
    "info1": [
      {
        "keyA1": "valueA1",
        "keyA2": "valueA2"
      },
      {
        "keyB1": "valueB1",
        "KeyB2": "valueB2"
      }
    ],
    "info2": {
        "keyA1": "valueA1",
        "keyA2": "valueA2"
    }
  }
}

我用以下方法收集了 json 文件:

myData = json.load(open('cool.json', encoding='utf-8'))

现在我有了 myData 可以很好地使用它。但是,在更新方面,有三种情况我无法正常工作。我需要能够:

  1. 将 info2 中的数据更改为数组 ( "info2": [vs "info2": {) 并添加另一个类似于 info1 中的 keyB1。
  2. 添加一个名为 data2 的全新部分

编辑完成后,我会转储myData回一个文件来编写它,我开始工作了。我知道我的新鲜感正在显现,这可能是我刚刚错过的一些简单的事情。我熟悉myData.update(newData)但无法弄清楚数组和新部分。任何帮助,将不胜感激。

目前,我有:

def dataAdd(value1, value2, dataSet, infoSet):
    if dataSet in myData.keys():
        newEntry = {"keyA1": value1, "keyA2": value2}
        myData[dataSet].update({infoSet:newEntry})
        with open('cool.json', "w") as jsonFile:
            json.dump(myData, jsonFile)

目前,上述代码将按预期添加,但会覆盖现有密钥。这就是为什么我在添加第二组时尝试转换为数组的原因。

标签: pythonjsonpython-3.x

解决方案


我认为你正在做:

new_data = myData.update(...)

.update()函数 return None,所以你应该

myData.update(...)

然后你已经myData更新并准备好被写入了。


推荐阅读