2011-12-21 19 views
7

Dalla documentazione: http://docs.python.org/library/json.htmlJSON carico/scarico in Python

>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') 
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}] 

ho modificato in questo modo:

>>> the_dump=json.dumps("['foo', {'bar':['baz', null, 1.0, 2]}]") 
>>> the_load = json.loads(the_dump) 
u"['foo', {'bar':['baz', null, 1.0, 2]}]" 

Ora è una stringa. Voglio fare questo: the_load[1]['bar'].

Si può fare in questo modo? Dove sto andando male?

Perché funziona?

>>> a= "[1,2,3]" 
>>> json.loads(a)[0] 
1 
+1

Se sei interessato alla velocità e alla sicurezza, ti consiglio di installare il modulo 'simplejson' da solo. Il modulo 'json' di Python, a partire da 2.6, è una versione precedente di' simplejson' che non ha tutti i miglioramenti di velocità e sicurezza dell'ultima versione. – Edwin

risposta

12
>>> the_dump=json.dumps("['foo', {'bar':['baz', null, 1.0, 2]}]") 

Stai chiedendo di JSON codificare una stringa, quindi non è sorprendente che si ottiene una stringa indietro quando a decodificare. Prova invece:

>>> the_dump=json.dumps(['foo', {'bar':['baz', None, 1.0, 2]}])