对于一个项目,我需要用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
}
]
}
]
}
提前致谢
答案 0 :(得分:1)
当我在python中使用JSON对象时,我记住了4种方法。
json.dumps(<a python dict object>)
- 给出了一个由python dict对象构成的json的字符串表示json.dump( <a python dict object>,<file obj>)
- 在文件对象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)