Un archivo JSON es un archivo que almacena objetos y estructuras de datos simples en formato de notación de objetos JavaScript (JSON), que es un formato de intercambio de datos estándar. Se utiliza principalmente para transmitir datos entre una aplicación web y un servidor. Un objeto JSON contiene datos en forma de un par clave/valor. Las claves son strings y los valores son los tipos JSON. Las claves y los valores están separados por dos puntos. Cada entrada (par clave/valor) está separada por una coma. Los archivos JSON son livianos, basados en texto, legibles por humanos y se pueden editar con un editor de texto.
Nota: Para obtener más información, consulte Trabajar con datos JSON en Python.
XML es un lenguaje de marcado diseñado para almacenar datos. Es sensible a mayúsculas y minúsculas. XML le ofrece definir elementos de marcado y generar un lenguaje de marcado personalizado. La unidad básica en el XML se conoce como elemento. El lenguaje XML no tiene etiquetas predefinidas. Simplifica el intercambio de datos, el transporte de datos, los cambios de plataforma, la disponibilidad de datos La extensión de un archivo XML es .xml
Nota: Para obtener más información, consulte XML | Lo esencial
Tanto el formato de archivo JSON como XML se utilizan para transferir datos entre el cliente y el servidor.
Sin embargo, ambos tienen el mismo propósito, aunque difieren en su forma de actuar.
Comparación entre JSON y XML
JSON | XML |
---|---|
El objeto JSON tiene un tipo | Los datos XML no tienen tipo |
Tipos JSON: string, número, array, booleano | Todos los datos XML deben ser strings |
Los datos son fácilmente accesibles como objetos JSON | Los datos XML deben analizarse |
JSON es compatible con la mayoría de los navegadores | El análisis XML entre navegadores puede ser complicado |
JSON no tiene capacidades de visualización | XML ofrece la capacidad de mostrar datos porque es un lenguaje de marcado |
JSON solo admite tipos de datos de texto y números. | XML admite varios tipos de datos, como números, texto, imágenes, tablas, gráficos, etc. También brinda opciones para transferir la estructura o el formato de los datos con datos reales. |
Recuperar valor es fácil | Recuperar valor es difícil |
Compatible con muchas herramientas de Ajax | No es totalmente compatible con el kit de herramientas de Ajax |
Una forma totalmente automatizada de deserializar/serializar JavaScript | Los desarrolladores tienen que escribir código JavaScript para serializar/deserializar desde XML |
Soporte nativo para objetos | El objeto tiene que expresarse mediante convenciones, principalmente el uso perdido de atributos y elementos. |
Solo admite la codificación UTF-8. | Admite varias codificaciones |
No admite comentarios. | Admite comentarios. |
Los archivos JSON son fáciles de leer en comparación con XML. | Los documentos XML son relativamente más difíciles de leer e interpretar. |
No proporciona ningún soporte para espacios de nombres. | Admite espacios de nombres. |
Es menos seguro. | Es más seguro que JSON. |
Manejo de JSON en Python 3
Para manejar el formato de archivo JSON, Python proporciona un módulo llamado json
.
PASO 1: importa el módulo json
import json as JS
PASO 2: importar el módulo xml.etree.ElementTree
import xml.etree.ElementTree as ET
PASO 3: Lea el archivo json
aquí, «datos» es la variable en la que hemos cargado nuestros datos JSON.
with open("quiz.json", "r") as json_file: data = JS.load(json_file);
PASO 4: Cree el elemento raíz
Cada archivo xml debe tener exactamente un elemento raíz
root = ET.Element("quiz")
PASO 5: Construir los subelementos del subelemento raíz
toma dos parámetros:
- root- Es el nombre de la variable donde se almacena el elemento raíz.
- subelement_name: Es el nombre del subelemento. Ejemplo:
Maths = ET.SubElement(root, "maths")
PASO 6: Cree el árbol del documento xml
tree = ET.ElementTree(root)
PASO 7: Escriba el xml en el archivo quiz.xml
tree.write("quiz.xml")
Nota: los elementos XML no admiten valores enteros, por lo que debemos convertirlos en strings.
Ejemplo:
Archivo JSON:
# Program to read JSON file # and generate its XML file # Importing json module and xml # module provided by python import json as JS import xml.etree.ElementTree as ET # Opening JSON file in read mode with open("myfile3.json", "r") as json_file: # loading json file data # to variable data data = JS.load(json_file); # Building the root element # of the xml file root = ET.Element("quiz") # Building the sub root elements # We don't add text since the value # associated with subelement is a # python dictionary Maths = ET.SubElement(root, "maths") # Building subelement of maths as q1 Q1 = ET.SubElement(Maths, "q1") ET.SubElement(Q1, "question"). text = data["quiz"]["maths"]["q1"]["question"] # Building multiple subelements with name options to hold different values # Xml elements cannot hold integer values so we need to # convert them to string ET.SubElement(Q1, "options").text = str(data["quiz"] ["maths"]["q1"] ["options"][0]) ET.SubElement(Q1, "options").text = str(data["quiz"] ["maths"]["q1"] ["options"][1]) ET.SubElement(Q1, "options").text = str(data["quiz"] ["maths"]["q1"] ["options"][2]) ET.SubElement(Q1, "options").text = str(data["quiz"] ["maths"]["q1"] ["options"][3]) ET.SubElement(Q1, "answer").text = str(data["quiz"] ["maths"]["q1"] ["answer"]) # Building subelement of maths as q2 Q2 = ET.SubElement(Maths, "q2") ET.SubElement(Q2, "question").text = data["quiz"] ["maths"]["q2"]["question"] # Building multiple subelements # with name options to hold # different values ET.SubElement(Q2, "options").text = str(data["quiz"] ["maths"] ["q2"] ["options"][0]) ET.SubElement(Q2, "options").text = str(data["quiz"] ["maths"] ["q2"] ["options"][1]) ET.SubElement(Q2, "options").text = str(data["quiz"] ["maths"]["q2"] ["options"][2]) ET.SubElement(Q2, "options").text = str(data["quiz"] ["maths"]["q2"] ["options"][3]) ET.SubElement(Q2, "answer").text = str(data["quiz"] ["maths"]["q2"] ["answer"]) # Building the tree of the xml # elements using the root element tree = ET.ElementTree(root) # Writing the xml to output file tree.write("quiz.xml")
Producción:
Publicación traducida automáticamente
Artículo escrito por abhinash_giri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA