web-dev-qa-db-fra.com

Comment ajouter une valeur-clé aux données JSON extraites d'un fichier avec Python?

Je suis nouveau sur Python et je joue avec des données JSON. Je voudrais récupérer les données JSON d'un fichier et ajouter à ces données une valeur-clé JSON "à la volée".

C'est mon json_file contient des données JSON comme suit:

{"key1": {"key1A": ["value1", "value2"], "key1B": {"key1B1": "value3"}}}

Je voudrais ajouter le "ADDED_KEY": "ADDED_VALUE" partie clé-valeur pour les données ci-dessus afin d'utiliser le JSON suivant dans mon script:

{"ADDED_KEY": "ADDED_VALUE", "key1": {"key1A": ["value1", "value2"], "key1B": {"key1B1": "value3"}}}

J'essaie d'écrire quelque chose de semblable à ce qui suit afin d'accomplir ce qui précède:

import json

json_data = open(json_file)
json_decoded = json.load(json_data)

# What I have to make here?!

json_data.close()
16
Backo

Votre json_decoded l'objet est un dictionnaire Python; vous pouvez simplement y ajouter votre clé, puis réencoder et réécrire le fichier:

import json

with open(json_file) as json_file:
    json_decoded = json.load(json_file)

json_decoded['ADDED_KEY'] = 'ADDED_VALUE'

with open(json_file, 'w') as json_file:
    json.dump(json_decoded, json_file)

J'ai utilisé les objets fichier ouverts comme gestionnaires de contexte ici (avec l'instruction with) donc Python ferme automatiquement le fichier une fois terminé.

17
Martijn Pieters

Json renvoyé par json.loads () se comporte comme des listes/dictionnaires natifs python:

import json

with open("your_json_file.txt", 'r') as f:
    data = json.loads(f.read()) #data becomes a dictionary

#do things with data here
data['ADDED_KEY'] = 'ADDED_VALUE'

#and then just write the data back on the file
with open("your_json_file.txt", 'w') as f:
    f.write(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')))
#I added some options for pretty printing, play around with them!

Pour plus d'informations, consultez le document officiel

5
0xff

Tu peux faire

json_decoded['ADDED_KEY'] = 'ADDED_VALUE'

OR

json_decoded.update({"ADDED_KEY":"ADDED_VALUE"})

ce qui fonctionne bien si vous souhaitez ajouter plusieurs paires clé/valeur.

Bien sûr, vous voudrez peut-être d'abord vérifier l'existence de ADDED_KEY - cela dépend de vos besoins.

ET je suppose que vous voulez peut-être enregistrer ces données dans le fichier

json.dump(json_decoded, open(json_file,'w'))
2
bsoist