Voor een project moet ik in een JSON-bestand schrijven met Python, maar alles wat ik al heb gezien (JSON.DUMP) komt niet overeen met wat ik wil doen …
Ik heb een structuur en ik wil gewoon iets binnen toevoegen.
Ik wil een service toevoegen aan een invoer bijvoorbeeld:
{
"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
}
]
}
]
}
Dank bij voorbaat
Antwoord 1, Autoriteit 100%
Ik houd 4 methoden in gedachten terwijl ik met JSON-objecten in Python werk.
json.dumps(<a python dict object>)
– geeft een koordrepresentatie van JSON gevormd uit het Python Dict-objectjson.dump( <a python dict object>,<file obj>)
– Schrijft een JSON-bestand in bestandsobjectjson.loads(<a string>)
– Leest een JSON-object uit een stringjson.load(<a json file>)
– leest een json-object uit het bestand.
Het volgende belangrijke om in gedachten te houden is dat json
‘s en dict
in python equivalent zijn.
Dus laten we zeggen dat de bestandsinhoud zich in een bestand addThis.json
bevindt.
Je hebt een al bestaand json-object in het bestand existing.json
.
De onderstaande code zou het werk moeten kunnen doen
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)
Bewerken:
Ervan uitgaande dat de inhoud van de addThis niet in een bestand zit, maar moet worden gelezen vanaf de console.
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)