Je suis nouveau sur Python et je joue avec les données JSON. Je souhaite créer dynamiquement un objet JSON en ajoutant une valeur-clé à un objet JSON existant.
J'ai essayé ce qui suit mais j'obtiens TypeError: 'str' object does not support item assignment
:
import json
json_data = json.dumps({})
json_data["key"] = "value"
print 'JSON: ', json_data
Vous construisez l'objet before en le codant en chaîne JSON:
import json
data = {}
data['key'] = 'value'
json_data = json.dumps(data)
JSON est un format de sérialisation, des données textuelles représentant une structure. Ce n'est pas elle-même cette structure.
Il existe déjà une solution qui permet de créer un dictionnaire (ou un dictionnaire imbriqué pour des données plus complexes), mais si vous souhaitez créer un objet, essayez peut-être "ObjDict". Cela donne beaucoup plus de contrôle sur le JSON à créer, par exemple en conservant l'ordre, et permet de construire en tant qu'objet qui peut être une représentation préférée de votre concept.
pip installer objdict en premier.
from objdict import ObjDict
data = ObjDict()
data.key = 'value'
json_data = data.dumps()
Vous pouvez créer le dictionnaire Python et le sérialiser au format JSON en une seule ligne et ce n’est même pas moche.
my_json_string = json.dumps({'key1': val1, 'key2': val2})
EasyDict
( doc ):EasyDict permet d'accéder aux valeurs dict en tant qu'attributs (fonctionne de manière récursive). Une notation de points semblable aux propriétés javascript pour les dessins python.
UTILISATION
>>> from easydict import EasyDict as edict >>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}}) >>> d.foo 3 >>> d.bar.x 1 >>> d = edict(foo=3) >>> d.foo 3
[ Installation ]:
pip install easydict
Toutes les réponses précédentes sont correctes, voici un moyen simple et supplémentaire de le faire. Par exemple, créer une structure de données Dict pour sérialiser et désérialiser un objet
( Avis None est Null en python et je l'utilise intentionnellement pour montrer comment vous pouvez stocker null et le convertir en json null.
import json
print('serialization')
myDictObj = { "name":"John", "age":30, "car":None }
##convert object to json
serialized= json.dumps(myDictObj, sort_keys=True, indent=3)
print(serialized)
## now we are gonna convert json to object
deserialization=json.loads(serialized)
print(deserialization)