使用Python在json文件中写入

Write in json file with Python

本问题已经有最佳答案,请猛点这里访问。

对于一个项目,我需要用python编写一个JSON文件,但是我所看到的(json.dump)与我想做的不匹配…

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
"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
                    }
                ]
        }
    ]
}

提前谢谢


在使用Python中的JSON对象时,我会记住4个方法。

  • json.dumps()—给出了由python dict对象形成的json的字符串表示形式。
  • json.dump( ,)—在文件对象中写入JSON文件
  • json.loads()—从字符串中读取JSON对象
  • json.load()—从文件中读取JSON对象。

接下来要记住的一点是,Python中的jsondict是等效的。

所以我们假设,文件内容驻留在一个文件addThis.json中。在文件existing.json中已有一个JSON对象。

下面的代码应该能够完成这项工作

1
2
3
4
5
6
7
8
9
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)

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)