python:从文件读取json数据并附加更多数据

标签 python json

我正在尝试从 json 文件读取现有数据,并尝试使用 python 将更多数据附加到该文件(我是 python 新手)。这是我在脚本中读取的 data.json 文件中的现有数据:

{
    "Config1": {
        "TestCase1": {
            "Data1": 200,
            "Data2": 2715
        }
    },
    "Config2": {
        "TestCase1": {
            "Data1": 2710,
            "Data2": 2715
        }
    }
}

读完后我想附加 TestCase2 数据。这就是我正在做的事情:

with open("data.json") as json_file: #load existing data
    json_data = json.load(json_file)

test='TestCase2'
result=json_data
myConfigs = ['Config1','Config2']
for each, config in enumerate(myConfigs):
    result.update({config:{test:{'Data1':2600,'Data2':2900}}})
with open('data.json', 'a') as outfile:
    json.dump(result, outfile)

data.json 中的新数据无效,如jsonLint 所示。 。我究竟做错了什么?这是新数据

{
        "Config1": {
            "TestCase1": {
                "Data1": 200,
                "Data2": 2715
            }
        },
        "Config2": {
            "TestCase1": {
                "Data1": 2710,
                "Data2": 2715
            }
        }
    } {
        "Config1": {
            "TestCase2": {
                "Data1": 2600,
                "Data2": 2900
            }
        },
        "Config2": {
            "TestCase2": {
                "Data1": 2600,
                "Data2": 2900
            }
        }
    }

最佳答案

除了以错误的模式(应该是“w”)打开文件之外,您还通过定义一个新的内联字典来覆盖旧的“配置”树。

而不是:

result.update({config:{test:{'Data1':2600,'Data2':2900}}})

试试这个:

result[config][test] = {'Data1': 2600, 'Data2': 2900}

这应该会为您提供示例中正在寻找的结果。当您添加 TestCase2 时,它会让 result['Config1']['TestCase1'] 持续存在。您可能还需要通过将 result[config] 设置为 {}(如果为 None)来确保配置树存在。

关于python:从文件读取json数据并附加更多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512112/

相关文章:

使用自动加载的 Python 和 SQLAlchemy 经典映射 : Mapper could not assemble any primary key columns for mapped table

Python堆叠直方图分组数据

python - 将图像作为二维数组导入 python

json - aws lambda 返回带斜杠的 json 数据

java - 从 Java 启动 HTML/CSS/Javascript 文件

php - 从嵌套集模型结构为 Fancytree 创建 JSON

python - 如何判断一个类是否是另一个类的后代

python - 提取Python中满足any()语句的子字符串的索引

Java处理JSON

java - Gson节点/链接对象映射