Cómo analizar JSON en Python

¿Te preguntas cómo analizar JSON en Python? No eres el único. Esta guía hace que leer, escribir y analizar JSON sea pan comido.

En esta guía rápida, repasamos los conceptos básicos del parseo en python, explicamos qué es JSON y cómo utilizar ambos para obtener los datos que necesitas.

¿Qué es el análisis sintáctico?

El análisis sintáctico es el proceso de convertir una secuencia de caracteres en un árbol sintáctico abstracto. A continuación, el analizador sintáctico utiliza este árbol para realizar diversas operaciones con la entrada, como comprobar la corrección sintáctica o determinar si hay algún error en la entrada.

Json Parsing From Scratch In Haskell | Abhinavsarkar.net

El tipo más común de analizador sintáctico es el llamado lexer, que convierte secuencias de caracteres en tokens (o "lexemas"). Un token puede ser cualquier cosa que tenga significado para tu lenguaje: puede ser un identificador, una cadena literal como "hola" o incluso algo más complejo como una llamada a una función. 

Una vez convertidos todos los lexemas en tokens, hay que decidir qué pasa con ellos una vez que el programa los procesa. Esta decisión depende de cómo funcione tu lenguaje. Algunos lenguajes no tienen el concepto de funciones; otros pueden usar recursividad y funciones de orden superior; otros pueden usar cierres o espacios de nombres anónimos, etc. 

También querrás asegurarte de que cada token no contiene más de un carácter para no crear accidentalmente bucles infinitos durante el análisis.

¿Qué es JSON?

JavaScript Object Notation is a lightweight data-interchange format that describes objects – via attribute/value pairs – for data storage or transport. For example, let’s say you have a glossary on your website. JSON uses a string to define it. “title” : “example glossary”

¿Cuáles son los principales tipos de archivos JSON?

Existen dos tipos principales de archivos JSON: object y Array. Object es una forma sencilla de almacenar cualquier tipo de datos, mientras que Array se utiliza para almacenar objetos que contienen otros objetos. 

¿Cuáles son las ventajas de utilizar JSON?

La principal ventaja de utilizar JSON frente a XML u otros formatos como CSV o HTML es que no tienes que preocuparte de ningún código especial de análisis en tu aplicación. Al utilizar JSON, debes incluir el archivo que contiene tus datos en el lugar correcto de tu página, y luego leer desde allí. Esto significa que no importa qué tipo de dispositivo alguien utiliza para ver su sitio - que siempre obtienen exactamente lo que se pretende obtener.  

¿Qué es Python?

Python es un lenguaje de programación de propósito general que puedes utilizar para muchos tipos diferentes de proyectos. Es fácil de aprender y tiene una gran cantidad de bibliotecas disponibles para hacerte la vida más fácil.  

Python también cuenta con una comunidad activa, lo que significa que hay muchos recursos en línea para ayudarte a empezar.

¿Qué es una cadena? 

Una cadena es una secuencia de caracteres. Los caracteres son símbolos, como letras o números. Así que, técnicamente, esta frase es una cadena

Pero los ordenadores no leen caracteres ni símbolos. Sólo leen 1s y 0s - on y off, either or; en otras palabras - binario

Aunque veas caracteres en la pantalla del ordenador, entre bastidores, los ordenadores están convirtiendo o codificando los caracteres en 1s y 0s. El proceso inverso (convertir binarios en caracteres) se denomina descodificación. 

En pocas palabras, una cadena Python es una secuencia de caracteres que convierte comandos humanos en el lenguaje binario que entienden los ordenadores. 

¿Qué son los módulos en Python? 

Los módulos descomponen grandes programas en pequeños archivos manejables y organizados. En Python, se refieren a archivos que contienen declaraciones y definiciones de Python. Un archivo que contiene código Python como example.py, por ejemplo, es un módulo. Su nombre de módulo sería 'ejemplo'. 

Cómo analizar JSON en Python.

Puedes utilizar el módulo JSON de Python para trabajar con JSON (cadena o archivo que contiene un objeto JSON). Te ayudará si importas el módulo antes de usarlo.

Importar json

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

Hay muchas formas de analizar la misma información a partir de una cadena formateada con la notación de objetos JSON (o cualquier otra forma). 

La forma más sencilla es utilizar la función incorporada 'json'. Acepta un parámetro opcional llamado 'indent' que especifica cuánta sangría utilizar al analizar los datos de entrada. 

Si es Ninguno, no habrá sangría. En caso contrario, se añadirá al menos un espacio antes de cada nueva línea de código. 

Este enfoque funciona bien para casos sencillos en los que sólo se desea extraer un valor de una lista de valores o un par clave/valor de una estructura de diccionario. 

¿Pero qué pasa si necesitas extraer múltiples valores de la misma estructura o quieres parsear una cadena JSON en un diccionario Python que contiene estructuras anidadas? En estos casos, es mejor utilizar el método 'json.loads'.

método json.loads

import json
person = '{"name": "Steve", "languages": ["English", "French"]}'
person_dict = json.loads(person)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print( person_dict)
# Output: ['English', 'French']
print(person_dict['languages'])

Aquí, 'persona' es una cadena JSON, y diccionario_persona es un diccionario.

Devolverá todas las claves y valores de los datos de entrada como diccionarios. Si no existen claves, se devolverá Ninguno para ese par clave/valor. El valor asociado a cada par clave/valor se determina buscando su entrada en el diccionario con su nombre.

Python leer archivo JSON

Puede utilizar el método json.load para leer un archivo que contenga un objeto JSON.

{"name": "Steve", 
"languages": ["English", "French"]
}

Así es como puedes analizar este archivo:

import json
with open('path_to_file/person.json', 'r') as f:
data = json.load(f)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print(data)

Convertir Python en cadena JSON

Puede convertir un diccionario en una cadena JSON utilizando el método json.dumps.

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)

Escribir JSON en un archivo 

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

import json
person_dict = {"name": "Steve",
"languages": ["English", "French"],
"married": False,
"age": 33
}
with open('person.txt', 'w') as json_file:
  json.dump(person_dict, json_file)

En el programa anterior, hemos abierto un archivo llamado persona.txt en modo escritura utilizando 'w.'. Si el archivo no existe, se creará uno. A continuación, json.dump transforma person_dict en una cadena JSON que guarda en el archivo person.txt.

Al ejecutar el programa, se crea el archivo person.txt. El archivo contiene el siguiente texto.

{"name": "Steve", "languages": ["English", "French"], "married": false, "age": 33} 

Python Pretty Print JSON

Para analizar y depurar datos JSON, puede que necesitemos imprimirlos en un formato más legible. Puedes hacerlo pasando parámetros adicionales indent y sort_keys a json.dumps y al método json.dump.

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 ejecutes el programa, la salida será:

{
    "languages": "English",
    "name": "Bob",
    "numbers": [
        2,
        1.6,
        null
    ]
}

En el programa anterior, hemos utilizado cuatro espacios para la sangría con las teclas ordenadas de forma ascendente.

Por cierto, el valor por defecto de indent es None, y el valor por defecto de sort_keys es False. 

Si esto le parece un poco exagerado, tenemos una fantástica y fácil de entender Introducción al Web Scraping. Si lo que buscas son proxies residenciales rotatorios para garantizar una operación de recopilación de datos sin problemas, ponte en contacto con nuestro equipo para obtener más detalles o explora nuestros paquetes mensuales inclusivos.

Preguntas frecuentes

¿Quién creó JSON?

Douglas Crockford lo creó en 1999 como alternativa a XML.

¿Qué es un árbol sintáctico?

Un árbol sintáctico muestra visualmente la estructura del lenguaje. Descompone el lenguaje en partes de una frase, generalmente ignorando el contexto.

¿Cómo leer un archivo JSON local en Python?

Primero, importa el módulo json y luego abre el archivo usando el nombre del archivo json con la función open(). A continuación, lea el archivo json utilizando load() y ponga los datos json en una variable.

In this Article:
Leave behind the complexities of web scraping.
Opt for IPBurger’s advanced web intelligence solutions to effortlessly collect real-time public data.
Inscríbete

Profundice aún más en el

Apoderados
AJ Tait
The Best Storm Proxies Alternative: Faster, Safer & More Affordable Proxies

Looking for a Storm Proxies Alternative? Storm Proxies sells the dream: simple, affordable proxies that “just work.” And for some users? It kind of delivers. Until it doesn’t. Because here’s the reality—if you’re pulling small data sets, running light scraping jobs, or dipping your toes into sneaker copping, Storm Proxies

Apoderados
AJ Tait
The Best IPRoyal Alternative for Power, Control & Price

Outgrowing IPRoyal? Here’s the Smarter Alternative If you’ve been using IPRoyal, chances are it was for one simple reason—it’s cheap. And in the world of proxies, “cheap” can be enough to get you started. But here’s the thing about IPRoyal: it’s a gateway, not a long-term solution. At first, it

Scale Your Business
With The Most Advanced
Proxies On Earth
Únase a la red de proxy más premiada