Análisis de datos JSON en Python3

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos.

Si aún no comprendes JSON, primero puedes leer nuestroTutorial de JSON。

En Python3 se puede usar el módulo json para codificar y decodificar datos JSON, este contiene dos funciones:

  • json.dumps(): Codifica los datos.
  • json.loads(): Decodifica los datos.

Durante el proceso de codificación y decodificación de json, los tipos nativos de Python y los tipos json se convierten entre sí. La correspondencia de conversión específica es la siguiente:

Tabla de conversión de tipos de Python a JSON al codificar:

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

Tabla de conversión de tipos de JSON a Python al decodificar:

JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

Ejemplos de json.dumps y json.loads

El siguiente ejemplo demuestra la conversión de una estructura de datos de Python a JSON:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 import json # Convertir el diccionario de Python a objeto JSON data = { 'no' : 1, 'name' : 'Ejemplo', 'url' : 'https://www.example.com' } json_str = json.dumps(data) print ("Datos originales de Python:", repr(data)) print ("Objeto JSON:", json_str)

Al ejecutar el código anterior, el resultado es:

Python 原始数据: {'no': 1, 'name': 'Ejemplo', 'url': 'https://www.example.com'}
JSON 对象: {"no": 1, "name": "Ejemplo", "url": "https://www.example.com"}

Según el resultado de salida, se puede observar que los tipos simples, después de codificarse, son muy similares a su salida repr() original.

Continuando con el ejemplo anterior, podemos convertir una cadena codificada en JSON de vuelta a una estructura de datos de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 import json # Convertir el diccionario de Python a objeto JSON data1 = { 'no' : 1, 'name' : 'Ejemplo', 'url' : 'http://www.example.com' } json_str = json.dumps(data1) print ("Datos originales de Python:", repr(data1)) print ("Objeto JSON:", json_str) # Convertir el objeto JSON a diccionario de Python data2 = json.loads(json_str) print ("data2['name']: ", data2['name']) print ("data2['url']: ", data2['url'])

Al ejecutar el código anterior, el resultado es:

Python 原始数据: {'name': 'Ejemplo', 'no': 1, 'url': 'http://www.example.com'}
JSON 对象: {"name": "Ejemplo", "no": 1, "url": "http://www.example.com"}
data2['name']:  Ejemplo
data2['url']:  http://www.example.com

Si lo que necesitas manejar es un archivo en lugar de una cadena, puedes usarjson.dump()yjson.load()para codificar y decodificar datos JSON. Por ejemplo:

Ejemplo (Python 3.0+)

# Escribir datos JSON with open('data.json', 'w') as f: json.dump(data, f) # Leer datos with open('data.json', 'r') as f: data = json.load(f)

Para más información, consulte:https://docs.python.org/3/library/json.html Otras extensiones