Domanda

Nella mia app ho la connessione a un server che restituisce una stringa unicode stile JSON che assomiglia dizionario di dizionari. Di conseguenza mi piacerebbe ottenere uno dizionario livellate con id come chiave e valore Unicode in questo modo:

{'1': u'autos','3': u'cities'}

Quindi, io carico la risposta con costruito nel modulo json:

>>> jsonData = json.loads(data)
>>> jsonData
{u'1': {u'id': u'1', u'name': u'autos'}, u'3': {u'id': u'3', u'name': u'cities'}, u'2': {u'id': u'2', u'name': u'business'},}
>>> type(jsonData)
<type 'dict'>

È possibile visualizzare l'oggetto restituito qui. Poi dovrei decomporsi a sbarazzarsi del dizionario genitore. E infine codificare i di id. Ho trovato due metodi come fare la codifica. Uno:

>>> import unicodedata
>>> unicodedata.normalize('NFKD', data).encode('ascii','ignore')

e la seconda:

>>> data.encode('ascii','ignore')

Come devo fare questa operazione, in particolare la decomposizione?

È stato utile?

Soluzione

Questo dovrebbe funzionare:

outputdata = {}
for id, stuff in jsonData.iteritems():
    outputdata[id.encode("ascii")] = stuff[u"name"]

Si potrebbe anche usare un generatore di espressione, come in risposta dugres'.

Altri suggerimenti

decomp=dict((v['id'], v['name']) for v in jsondata.values())
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top