2012-02-08 10 views
18

Sto scrivendo uno script Python per analizzare le informazioni JSON dall'API Soundcloud e mi chiedevo solo quali fossero le "u" quando uso json.loads (val) e come memorizzare le informazioni JSON in un oggetto senza il tuo?Quali sono le tue quando uso json.loads?

vale a dire il motivo per cui ci sono u contenuto di questa:

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

vedere la sezione "decodifica JSON" qui per capire cosa intendo ulteriormente:

http://docs.python.org/library/json.html

Grazie!

+0

un altro post utili: http://stackoverflow.com/questions/13940272/python-JSON-carica-rendimenti-oggetti-prefisso-con-u –

risposta

7

le u' s sono lì per indicare che una stringa Unicode dovrebbe essere creato.

Fa schifo che json.dump converta le stringhe in stringhe unicode e non lasci traccia di averlo fatto, perché quindi json.load non può riconvertire.

Per convertire in oggetti stringa, utilizzare PyYAML:

>>> import yaml 
>>> yaml.load('["foo", {"bar":["baz", null, 1.0, 2]}]') 
>>> ['foo', {'bar': ['baz', None, 1.0, 2]}] 

Ma attenzione! Se per qualche motivo si json.dump Ed un oggetto contenente le stringhe di oggetti e stringhe Unicode, yaml caricherà tutto come stringhe di oggetti (anche se questo è json.dump s' colpa in realtà)

Problemi correlati