Python JSON
En este capítulo, presentaremos cómo usar el lenguaje Python para codificar y decodificar objetos JSON.
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, fácil de leer y escribir para las personas.
Funciones JSON
Para usar las funciones JSON, es necesario importar la librería json:import json。
| Función | Descripción |
|---|---|
| json.dumps | Codificar objetos de Python en cadenas JSON |
| json.loads | Decodificar cadenas JSON codificadas en objetos de Python |
json.dumps
json.dumps se utiliza para codificar objetos de Python en cadenas JSON.
Sintaxis
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
Ejemplo
El siguiente ejemplo codifica una matriz como datos en formato JSON:
Ejemplo
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps(data)
print(data2)
El resultado de ejecutar el código anterior es:
[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
Usar parámetros para formatear la salida de datos JSON:
Ejemplo
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps({'a': 'Ejemplo', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)
El resultado de ejecutar el código anterior es:
{
"a": "Ejemplo",
"b": 7
}
Tabla de conversión de tipos primitivos de Python a tipos JSON:
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str, unicode | string |
| int, long, float | number |
| True | true |
| False | false |
| None | null |
json.loads
json.loads se utiliza para decodificar datos JSON. Esta función devuelve el tipo de datos de Python.
Sintaxis
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
Ejemplo
El siguiente ejemplo muestra cómo Python decodifica objetos JSON:
Ejemplo
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print(text)
El resultado de ejecutar el código anterior es:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
Tabla de conversión de tipos JSON a tipos Python:
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | unicode |
| number (int) | int, long |
| number (real) | float |
| true | True |
| false | False |
| null | None |
Para más información, consulte:https://docs.python.org/2/library/json.html。
Usando la biblioteca de terceros: Demjson
Demjson es una biblioteca de módulos de terceros de Python, que se puede usar para codificar y decodificar datos JSON, e incluye funciones de formato y validación de JSONLint.
Dirección de Github:https://github.com/dmeranda/demjson
Dirección oficial:http://deron.meranda.us/python/demjson/
Configuración del entorno
Antes de usar Demjson para codificar o decodificar datos JSON, debemos instalar primero el módulo Demjson. En este tutorial descargaremosDemjsone instalaremos:
$ tar -xvzf demjson-2.2.3.tar.gz $ cd demjson-2.2.3 $ python setup.py install
Para más información sobre la instalación, consulte:http://deron.meranda.us/python/demjson/install
Funciones JSON
| Función | Descripción |
|---|---|
| encode | Codificar objetos de Python en cadenas JSON |
| decode | Decodificar cadenas JSON codificadas en objetos de Python |
encode
La función encode() de Python se utiliza para codificar objetos de Python en cadenas JSON.
Sintaxis
demjson.encode(self, obj, nest_level=0)
Ejemplo
El siguiente ejemplo codifica una matriz como datos en formato JSON:
Ejemplo
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print(json)
El resultado de ejecutar el código anterior es:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
decode
Python puede usar la función demjson.decode() para decodificar datos JSON. Esta función devuelve el tipo de datos de Python.
Sintaxis
demjson.decode(self, txt)
Ejemplo
El siguiente ejemplo muestra cómo Python decodifica objetos JSON:
Ejemplo
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print(text)
El resultado de ejecutar el código anterior es:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
Otras extensiones