Trabajar con datos JSON en Python

JSON es la notación de objetos de JavaScript. Significa que un archivo de secuencia de comandos (ejecutable) que está hecho de texto en un lenguaje de programación se utiliza para almacenar y transferir los datos. Python admite JSON a través de un paquete integrado llamado JSON. Para usar esta función, importamos el paquete JSON en el script de Python. El texto en JSON se realiza a través de una string entre comillas que contiene el valor en el mapeo de clave-valor dentro de { }. Es similar al diccionario en Python. JSON muestra una API similar a la de los usuarios de los módulos marshal y pickle de la biblioteca estándar, y Python admite de forma nativa las características de JSON. Por ejemplo:  

Python3

# Python program showing
# use of json package
 
import json
 
# {key:value mapping}
a ={"name":"John",
   "age":31,
    "Salary":25000}
 
# conversion to JSON done by dumps() function
 b = json.dumps(a)
 
# printing the output
print(b)

Producción: 

{"age": 31, "Salary": 25000, "name": "John"}

Como puede ver, JSON admite tipos primitivos, como strings y números, así como listas anidadas, tuplas y objetos.  

Python3

# Python program showing that
# json support different primitive
# types
 
import json
 
# list conversion to Array
print(json.dumps(['Welcome', "to", "GeeksforGeeks"]))
 
# tuple conversion to Array
print(json.dumps(("Welcome", "to", "GeeksforGeeks")))
 
# string conversion to String
print(json.dumps("Hi"))
 
# int conversion to Number
print(json.dumps(123))
 
# float conversion to Number
print(json.dumps(23.572))
 
# Boolean conversion to their respective values
print(json.dumps(True))
print(json.dumps(False))
 
# None value to null
print(json.dumps(None))

Producción: 

["Welcome", "to", "GeeksforGeeks"]
["Welcome", "to", "GeeksforGeeks"]
"Hi"
123
23.572
true
false
null

Serializando JSON: 

El proceso de codificación de JSON suele denominarse serialización . Este término se refiere a la transformación de datos en una serie de bytes (por lo tanto, en serie) para ser almacenados o transmitidos a través de una red. Para manejar el flujo de datos en un archivo, la biblioteca JSON en Python usa la función dump() para convertir los objetos de Python en su respectivo objeto JSON, por lo que facilita la escritura de datos en los archivos. Consulte la siguiente tabla que se proporciona a continuación.  

objeto python objeto JSON
dictar objeto
lista, tupla formación
calle cuerda
int, largo, flotante números
Verdadero verdadero
Falso falso
Ninguna nulo

Ejemplo: Serialización  

Considere el ejemplo dado de un objeto de Python.

Python3

var = {
      "Subjects": {
                  "Maths":85,
                  "Physics":90
                   }
      }

Usando el administrador de contexto de Python , cree un archivo llamado Sample.json y ábralo con el modo de escritura. 

Python3

with open("Sample.json", "w") as p:
     json.dump(var, p)

Aquí, el volcado() toma dos argumentos primero, el objeto de datos que se serializará y, en segundo lugar, el objeto en el que se escribirá (formato de byte). 

Deserializando JSON:

La deserialización es lo opuesto a la serialización, es decir, la conversión de objetos JSON en sus respectivos objetos de Python. Para ello se utiliza el método load(). Si usó datos JSON de otro programa o los obtuvo como un formato de string de JSON, puede deserializarlos fácilmente con load(), que generalmente se usa para cargar desde una string; de lo contrario, el objeto raíz está en una lista o dictar 

Python3

with open("Sample.json", "r") as read_it:
     data = json.load(read_it)

Ejemplo: deserialización 

Python3

json_var ="""
{
    "Country": {
        "name": "INDIA",
        "Languages_spoken": [
            {
                "names": ["Hindi", "English", "Bengali", "Telugu"]
            }
        ]
    }
}
"""
var = json.loads(json_var)

Codificación y decodificación: 

La codificación se define como convertir el texto o los valores en una forma encriptada que solo puede ser utilizada por el usuario deseado mediante la decodificación. Aquí la codificación y decodificación se realiza para el formato JSON (objeto). La codificación también se conoce como serialización y la decodificación se conoce como deserialización. Python tiene un paquete popular para esta operación. Este paquete se conoce como Demjson . Para instalarlo sigue los siguientes pasos. 

Para ventanas: 

pip install demjson

Para Ubuntu:

 sudo apt-get update
 sudo apt-get install python-demjson

Codificación : la función codificar() se utiliza para convertir el objeto python en una representación de string JSON.

Sintaxis:  

demjson.encode(self, obj, nest_level=0) 

Ejemplo 1: Codificación usando el paquete demjson. 

Python3

# storing marks of 3 subjects
var = [{"Math": 50, "physics":60, "Chemistry":70}]
print(demjson.encode(var))

Producción: 

[{"Chemistry":70, "Math":50, "physics":60}]

Decodificación : la función decode() se utiliza para convertir el objeto JSON en tipo de formato python. 

Sintaxis:

demjson.decode(self, obj)

Ejemplo 2: decodificación usando el paquete demjson 

Python3

var = '{"a":0, "b":1, "c":2, "d":3, "e":4}'
text = demjson.decode(var)

Producción: 

{'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4}

Ejemplo 3: Codificación usando el paquete iterencode  

Python3

# Other Method of Encoding
json.JSONEncoder().encode({"foo": ["bar"]})
'{"foo": ["bar"]}'
 
# Using iterencode(object) to encode a given object.
for i in json.JSONEncoder().iterencode(bigobject):
    mysocket.write(i)

Ejemplo 4: Codificación y decodificación mediante dumps() y loads().

Python3

# To encode and decode operations
import json
var = {'age':31, 'height':6}
x = json.dumps(var)
y = json.loads(x)
print(x)
print(y)
 
# when performing from a file in disk
with open("any_file.json", "r") as readit:
    x = json.load(readit)
print(x)

Uso de la línea de comandos

La biblioteca JSON también se puede usar desde la línea de comandos para validar e imprimir su JSON.

$ echo "{ \"name\": \"Monty\", \"age\": 45 }"

Buscando a través de JSON con JMESPath

JMESPath es un lenguaje de consulta para JSON. Le permite obtener fácilmente los datos que necesita de un documento JSON. Si alguna vez trabajó con JSON, probablemente sepa que es fácil obtener un valor anidado. Por ejemplo, doc[«persona»][«edad»] obtendrá el valor anidado para la edad en un documento.

Primero, instale jmespath: 

$ pip3 install jmespath

Ejemplo del mundo real: 

Tomemos un ejemplo de la vida real de la implementación de JSON en python. Una buena fuente para fines prácticos es JSON_placeholder , proporciona un excelente paquete de requests de API que usaremos en nuestro ejemplo. Para empezar, sigue estos sencillos pasos. Abra Python IDE o CLI y cree un nuevo archivo de script, asígnele el nombre sample.py. 

Python3

import requests
import json
 
# Now we have to request our JSON data through
# the API package
res = requests.get("https://jsonplaceholder.typicode.com / todos")
var = json.loads(res.text)
 
# To view your Json data, type var and hit enter
var
 
# Now our Goal is to find the User who have
# maximum completed their task !!
# i.e we would count the True value of a
# User in completed key.
# {
    # "userId": 1,
    # "id": 1,
    # "title": "Hey",
    # "completed": false,  # we will count
                           # this for a user.
# }
 
# Note that there are multiple users with
# unique id, and their task have respective
# Boolean Values.
 
def find(todo):
    check = todo["completed"]
    max_var = todo["userId"] in users
    return check and max_var
 
# To find the values.
 
Value = list(filter(find, todos))
 
# To write these value to your disk
 
with open("sample.json", "w") as data:
    Value = list(filter(keep, todos))
    json.dump(Value, data, indent = 2)

Para saber más, Click Aquí

Publicación traducida automáticamente

Artículo escrito por kartikeya shukla 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *