Schrijf in JSON-bestand met Python [Duplicate]

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-object
  • json.dump( <a python dict object>,<file obj>)– Schrijft een JSON-bestand in bestandsobject
  • json.loads(<a string>)– Leest een JSON-object uit een string
  • json.load(<a json file>)– leest een json-object uit het bestand.

Het volgende belangrijke om in gedachten te houden is dat json‘s en dictin python equivalent zijn.

Dus laten we zeggen dat de bestandsinhoud zich in een bestand addThis.jsonbevindt.
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)

Other episodes