python - 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 可以很好地使用它。但是,在更新方面,有三种情况我无法正常工作。我需要能够:
- 将 info2 中的数据更改为数组 (
"info2": [
vs"info2": {
) 并添加另一个类似于 info1 中的 keyB1。 - 添加一个名为 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)
目前,上述代码将按预期添加,但会覆盖现有密钥。这就是为什么我在添加第二组时尝试转换为数组的原因。
解决方案
我认为你正在做:
new_data = myData.update(...)
.update()
函数 return None
,所以你应该
myData.update(...)
然后你已经myData
更新并准备好被写入了。
推荐阅读
- wordpress - 想要获取父类别名称而不是子类别名称而不是帖子标题
- python - TypeError:无法解压不可迭代的函数对象
- mysql - 在 Group Concat 中显示前 X 个结果
- neo4j - Neo4j | Cypher - 给定节点 A,显示 C 类型节点 B 的路径,该节点 B 具有超过 X 个 D 类型子节点
- python-3.x - python3:找不到命令
- algorithm - 使用预初始化的静态字典进行压缩
- python-3.x - 从列表列表中制作字典列表,列表 [0] 作为键,其他列表作为值
- loops - 在 appscript 中获取包含特定数据的单元格
- github - npm 通知从 2021 年 10 月 4 日开始,所有与 npm 注册表的连接(包括安装包)都必须使用 TLS 1.2 或更高版本
- python - numpy.where 包含字符串条件