使用Python在json文件中写入

时间:2016-08-02 09:09:41

标签: python json

对于一个项目,我需要用python写一个json文件,但我已经看过(json.dump)与我想做的事情不匹配...

我有一个结构,我只想在里面添加一些东西。 我想添加一个带有输入的服务,例如:

{
"Serial_011": "011",
"Servers_011":
    [
        {
            "hostname": "srv-a.11",
            "ipv4_address": "0.0.0.0",
            "services":
                [
                    {
                        "uri": "http://www.google.fr/1",
                        "expected_code": 200
                    },
                    {
                        "uri": "http://www.google.fr/2",
                        "expected_code": 200
                    }
                ]
        },
        {
            "hostname": "nsc-srv-b.11",
            "ipv4_address": "0.0.0.0",
            "services":
                [
                    {
                        "uri": "http://www.google.fr/3",
                        "expected_code": 200
                    },
                    {
                        "uri": "http://www.google.fr/4",
                        "expected_code": 200
                    }
                ]
        }
    ]
}

提前致谢

1 个答案:

答案 0 :(得分:1)

当我在python中使用JSON对象时,我记住了4种方法。

  • json.dumps(<a python dict object>) - 给出了一个由python dict对象构成的json的字符串表示
  • json.dump( <a python dict object>,<file obj>) - 在文件对象
  • 中写入json文件
  • json.loads(<a string>) - 从字符串中读取json对象
  • json.load(<a json file>) - 从文件中读取json对象。

要记住的下一个重要事项是json和python中的dict是等价的。

所以我们说,文件内容驻留在文件addThis.json中。 您在文件existing.json中已存在一个json对象。

以下代码应该可以完成这项工作

import json

existing = json.load(open("/tmp/existing.json","r"))
addThis = json.load(open("/tmp/addThis.json","r"))

for key in addThis.keys():
     existing[key] = addThis[key]

json.dump(exist,open("/tmp/combined.json","w"),indent=4)

编辑: 假设addThis的内容不在文件中,而是从控制台读取。

import json

existing = json.load(open("/tmp/existing.json","r"))

addThis = input()
# paste your json here.
# addThis is now simply a string of the json content of what you to add

addThis = json.loads(addThis) #converting a string to a json object.
# keep in mind we are using loads and not load

for key in addThis.keys():
     existing[key] = addThis[key]

json.dump(exist,open("/tmp/combined.json","w"),indent=4)