¿Qué son las u cuando uso json.loads?

He estado escribiendo un script de Python para analizar la información JSON de la API de Soundcloud, y me preguntaba qué es la “u” cuando uso json.loads (val) y cómo almacenar la información JSON en un objeto sin ¿los Estados Unidos?

es decir, ¿por qué estás en esto?

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

Consulte la sección “Deencoding de JSON” aquí para comprender a qué me refiero:

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

¡Gracias!

Cuerdas Unicode. Ver el tutorial de Python .

En el código fuente de Python, los literales Unicode se escriben como cadenas prefijadas con el carácter ‘u’ o ‘U’: u’abcdefghijk ‘.

– Los literales de Unicode en el código fuente de Python

las u' están allí para indicar que se debe crear una cadena Unicode.

json.dump que json.dump convierte las cadenas en cadenas Unicode y no deja rastro de haberlo hecho, porque entonces json.load no puede volver a convertir.

Para convertir objetos de cadena, use PyYAML :

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

¡Pero cuidado! Si, por algún motivo, json.dump un objeto que contiene cadenas de objetos y cadenas Unicode, yaml cargará todo como cadenas de objetos (aunque eso es un json.dump de json.dump )