web-dev-qa-db-fra.com

Conversion d'objets JSON en dictionnaire en python

J'ai une chaîne de données essentiellement qui a un objet avec dans les objets ..

{"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", group:{"id": "XXXX"}}}. You can check this format using "http://chris.photobooks.com/json/default.html" site.

Non, mon exigence est de convertir cela en objets JSON sous forme de dictionnaire. J'ai essayé ci-dessous

import json
JSON_Datalist = '{"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", group:{"id": "XXXX"}}}'
the_dict = json.loads(JSON_DataList)

mais the_dict ne donne que des valeurs de gauche, pas de bonnes valeurs ...

De la même manière si string a un format ..

"[{"sample": false, "radop": null, "view": true, "Example1": null}, {"noMarket": false, "Example2": null}]"

et en suivant le même code.

JSON_Datalist = '[{"sample": false, "radop": null, "view": true, "Example1": null}, {"noMarket": false, "Example2": null}]'

the_dict = json.loads(JSON_DataList)

ça donne un dictionnaire de longueur de 2, et c'est ce à quoi on s'attendait ...

Quelqu'un peut-il m'aider s'il vous plaît dans le premier cas, comment puis-je obtenir un dictionnaire ...

8
Guruswamy B M

J'ai trouvé deux erreurs dans votre premier exemple:

  1. Vous avez une group dans votre version codifiée (Json) de votre dict. Cela devrait être un "group" (avec des guillemets).
  2. Vous avez mal orthographié votre variable; JSON_DatalistJSON_DataList (minuscule ou majuscule).

Après avoir réparé les deux, je n'ai plus eu de problèmes:

>>> JSON_Datalist = '{"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", "group":{"id": "XXXX"}}}'
>>> the_dict = json.loads(JSON_Datalist)
>>> the_dict
{u'user': {u'username': u'XYZ', u'group': {u'id': u'XXXX'}, u'id': u'XXXX'}, u'id': u'XXXX', u'name': u'xyz'}
6
Alfe

après avoir résolu le problème, le groupe doit être "groupe", le code ci-dessous peut répondre à vos besoins

json_data={"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", "group":{"id": "XXXX"}}}
data = json.dumps(json_data)
json_to_python = json.loads(data)
print (json_to_python)


{'id': 'XXXX', 'name': 'xyz', 'user': {'id': 'XXXX', 'username': 'XYZ', 'group': {'id': 'XXXX'}}}
1
xiyurui

J'ai découvert comment générer the_dict['user']['group']['id'] de manière dynamique via l'expression eval de Python.

Keys est l'entrée de l'utilisateur, séparée par :. Exemple: user:group:id.

CODE:  

RefCount = 0
RespDict = json.loads(JSON_Datalist.content) #convert strings to Java object using JSON
SplitKeys = Keys.split(":") 
KeyCount = len(SplitKeys)
CommandText = "RespDict" #To setup command line based on keys information
while (RefCount <KeyCount):
    CommandText = CommandText+"['"+SplitKeys[RefCount]+"']"
    RefCount = RefCount + 1
    print CommandText        
print eval(CommandText)  #Final key value
0
Guruswamy B M