Python JSON: lectura, escritura, análisis de JSON (con ejemplos)

En este tutorial, aprenderá a analizar, leer y escribir JSON en Python con la ayuda de ejemplos. Además, aprenderá a convertir JSON a dict e imprimirlo con estilo.

JSON ( J ava S cript O bject N otation) es un formato de datos popular que se utiliza para representar datos estructurados. Es común transmitir y recibir datos entre un servidor y una aplicación web en formato JSON.

En Python, JSON existe como una cadena. Por ejemplo:

 p = '("name": "Bob", "languages": ("Python", "Java"))' 

También es común almacenar un objeto JSON en un archivo.

Importar módulo json

Para trabajar con JSON (cadena o archivo que contiene un objeto JSON), puede usar el jsonmódulo de Python . Necesita importar el módulo antes de poder usarlo.

 import json

Analizar JSON en Python

El jsonmódulo facilita el análisis de cadenas JSON y archivos que contienen objetos JSON.

Ejemplo 1: Python JSON para dictar

Puede analizar una cadena JSON usando el json.loads()método. El método devuelve un diccionario.

 import json person = '("name": "Bob", "languages": ("English", "Fench"))' person_dict = json.loads(person) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print( person_dict) # Output: ('English', 'French') print(person_dict('languages'))

Aquí, person es una cadena JSON y person_dict es un diccionario.

Ejemplo 2: Python lee un archivo JSON

Puede usar el json.load()método para leer un archivo que contiene un objeto JSON.

Supongamos que tiene un archivo llamado person.jsonque contiene un objeto JSON.

  ("name": "Bob", "languages": ("English", "Fench") ) 

Así es como puede analizar este archivo:

  import json with open('path_to_file/person.json') as f: data = json.load(f) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print(data) 

Aquí, hemos utilizado la open()función para leer el archivo json. Luego, el archivo se analiza usando el json.load()método que nos da un diccionario llamado datos.

Si no sabe cómo leer y escribir archivos en Python, le recomendamos que compruebe la E / S de archivos de Python.

Python Convertir a cadena JSON

Puede convertir un diccionario a una cadena JSON usando el json.dumps()método.

Ejemplo 3: convertir dict a JSON

  import json person_dict = ('name': 'Bob', 'age': 12, 'children': None ) person_json = json.dumps(person_dict) # Output: ("name": "Bob", "age": 12, "children": null) print(person_json) 

Aquí hay una tabla que muestra los objetos de Python y su conversión equivalente a JSON.

Pitón Equivalente JSON
dict objeto
list, tuple formación
str cuerda
int, float,int número
True cierto
False falso
None nulo

Escribir JSON en un archivo

Para escribir JSON en un archivo en Python, podemos usar el json.dump()método.

Ejemplo 4: escribir JSON en un archivo

  import json person_dict = ("name": "Bob", "languages": ("English", "Fench"), "married": True, "age": 32 ) with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file) 

En el programa anterior, hemos abierto un archivo llamado person.txten modo de escritura usando 'w'. Si el archivo aún no existe, se creará. Luego, se json.dump()transforma person_dicten una cadena JSON que se guardará en el person.txtarchivo.

Cuando ejecute el programa, se person.txtcreará el archivo. El archivo tiene el siguiente texto dentro.

 ("name": "Bob", "languages": ("English", "Fench"), "married": true, "age": 32)

JSON de impresión bonita de Python

Para analizar y depurar datos JSON, es posible que debamos imprimirlos en un formato más legible. Esto se puede hacer haciendo pasar parámetros adicionales indenty sort_keysa json.dumps()y json.dump()método.

Ejemplo 5: JSON de impresión bonita de Python

  import json person_string = '("name": "Bob", "languages": "English", "numbers": (2, 1.6, null))' # Getting dictionary person_dict = json.loads(person_string) # Pretty Printing JSON string back print(json.dumps(person_dict, indent = 4, sort_keys=True)) 

Cuando ejecute el programa, la salida será:

 ("idiomas": "inglés", "nombre": "Bob", "números": (2, 1.6, nulo)) 

En el programa anterior, hemos utilizado 4espacios para la sangría. Y las claves están ordenadas en orden ascendente.

Por cierto, el valor predeterminado de sangría es None. Y el valor predeterminado de sort_keys es False.

Lecturas recomendadas:

  • Python JSON a CSV y viceversa
  • Python XML a JSON y viceversa
  • Python simplejson

Articulos interesantes...