Persistencia de datos de Python - Módulo JSON

JSON significa JavaScript Object Notation. Es un formato de intercambio de datos ligero. Es un formato de texto multiplataforma e independiente del idioma, compatible con muchos lenguajes de programación. Este formato se utiliza para el intercambio de datos entre el servidor web y los clientes.

El formato JSON es similar a pickle. Sin embargo, la serialización pickle es específica de Python, mientras que el formato JSON es implementado por muchos lenguajes, por lo que se ha convertido en un estándar universal. La funcionalidad y la interfaz del módulo json en la biblioteca estándar de Python es similar a los módulos pickle y marshal.

Al igual que en el módulo pickle, el módulo json también proporciona dumps() y loads() función para la serialización del objeto Python en una cadena codificada JSON, y dump() y load() las funciones escriben y leen objetos Python serializados hacia / desde un archivo.

  • dumps() - Esta función convierte el objeto en formato JSON.

  • loads() - Esta función vuelve a convertir una cadena JSON en un objeto Python.

El siguiente ejemplo demuestra el uso básico de estas funciones:

import json
   data=['Rakesh',{'marks':(50,60,70)}]
   s=json.dumps(data)
json.loads(s)

La función dumps () puede tomar el argumento sort_keys opcional. De forma predeterminada, es falso. Si se establece en True, las claves del diccionario aparecen ordenadas en la cadena JSON.

La función dumps () tiene otro parámetro opcional llamado sangría que toma un número como valor. Decide la longitud de cada segmento de representación formateada de la cadena json, similar a la salida de impresión.

El módulo json también tiene una API orientada a objetos que corresponde a las funciones anteriores. Hay dos clases definidas en el módulo: JSONEncoder y JSONDecoder.

Clase JSONEncoder

El objeto de esta clase es un codificador para estructuras de datos de Python. Cada tipo de datos de Python se convierte en el tipo JSON correspondiente, como se muestra en la siguiente tabla:

Pitón JSON
Dictar objeto
lista, tupla formación
Str cuerda
Enums derivados de int, float, int y float número
Cierto cierto
Falso falso
Ninguna nulo

El constructor JSONEncoder () crea una instancia de la clase JSONEncoder. Los siguientes métodos importantes se definen en la clase de codificador:

No Señor. Métodos y descripción
1

encode()

serializa el objeto Python en formato JSON

2

iterencode()

Codifica el objeto y devuelve un iterador que produce la forma codificada de cada elemento del objeto.

3

indent

Determina el nivel de sangría de la cadena codificada

4

sort_keys

es verdadero o falso para que las claves aparezcan ordenadas o no.

5

Check_circular

si es Verdadero, busque una referencia circular en el objeto de tipo contenedor

El siguiente ejemplo codifica el objeto de lista de Python.

e=json.JSONEncoder()
e.encode(data)

Clase JSONDecoder

El objeto de esta clase ayuda a decodificar en una cadena json a la estructura de datos de Python. El método principal de esta clase es decode (). El siguiente código de ejemplo recupera el objeto de lista de Python de la cadena codificada en el paso anterior.

d=json.JSONDecoder()
d.decode(s)

El módulo json define load() y dump() funciones para escribir datos JSON en un archivo como un objeto, que puede ser un archivo de disco o un flujo de bytes y leer datos de ellos.

tugurio()

Esta función escribe datos de objetos de Python en JSON en un archivo. El archivo debe abrirse con el modo 'w'.

import json
data=['Rakesh', {'marks': (50, 60, 70)}]
   fp=open('json.txt','w')
   json.dump(data,fp)
   fp.close()

Este código creará 'json.txt' en el directorio actual. Muestra el contenido de la siguiente manera:

["Rakesh", {"marks": [50, 60, 70]}]

carga()

Esta función carga datos JSON del archivo y devuelve el objeto Python desde él. El archivo debe abrirse con permiso de lectura (debe tener el modo 'r').

Example

fp=open('json.txt','r')
   ret=json.load(fp)
   print (ret)
   fp.close()

Output

['Rakesh', {'marks': [50, 60, 70]}]

los json.tool El módulo también tiene una interfaz de línea de comandos que valida los datos en el archivo e imprime el objeto JSON de una manera bastante formateada.

C:\python37>python -m json.tool json.txt
[
   "Rakesh",   
   {
      "marks": [
         50,
         60,
         70
      ]
   }
]