- docx (formato de Microsoft Word);
- pdf (formato Adobe);
- mobi (comúnmente utilizado en dispositivos Kindle de Amazon);
- y mucho más (ePub, djvu, fb2, etc.).
JSON
Notación de objetos JavaScript. ¡Ya sabes un poco sobre este formato! Hablamos de esto en esta lección y cubrimos la serialización en JSON aquí mismo . Recibió su nombre por una razón. Los objetos de Java convertidos a JSON en realidad se ven exactamente como los objetos en JavaScript. No necesitas saber JavaScript para entender nuestro objeto:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
No estamos limitados a enviar un solo objeto. El formato JSON también puede representar una matriz de objetos:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Debido a que JSON representa objetos de JavaScript, admite los siguientes formatos de datos de JavaScript:
- instrumentos de cuerda;
- números;
- objetos;
- arreglos;
- booleanos (verdadero y falso);
- nulo.
-
Formato legible por humanos. Esta es una ventaja obvia si su usuario final es humano. Por ejemplo, suponga que su servidor tiene una base de datos con un horario de vuelos. Un cliente humano, sentado frente a su computadora en casa, solicita datos de esta base de datos mediante una aplicación web. Debido a que necesita proporcionar datos en un formato que él pueda entender, JSON es una gran solución.
-
Sencillez. Es súper simple :) Arriba, dimos un ejemplo de dos archivos JSON. E incluso si no ha oído hablar de JavaScript (y mucho menos de los objetos de JavaScript), puede comprender fácilmente el tipo de objetos que se describen allí.
Toda la documentación de JSON consiste en una página web con un par de imágenes. -
Uso extendido. JavaScript es el lenguaje front-end dominante y tiene sus propios requisitos. Usar JSON es imprescindible. Por lo tanto, una gran cantidad de servicios web utilizan JSON como formato de intercambio de datos. Todos los IDE modernos admiten el formato JSON (incluido IntelliJ IDEA). Se han escrito un montón de bibliotecas para todo tipo de lenguajes de programación para permitir trabajar con JSON.
YAML
Inicialmente, YAML significaba "Yet Another Markup Language". Cuando comenzó, se posicionó como un competidor de XML. Ahora, con el paso del tiempo, YAML ha llegado a significar "YAML no es un lenguaje de marcado". ¿Qué es exactamente? Imaginemos que necesitamos crear 3 clases para representar personajes en un juego de computadora: Guerrero, Mago y Ladrón. Tendrán las siguientes características: fuerza, agilidad, resistencia, un conjunto de armas. Así es como se vería un archivo YAML que describe nuestras clases:
classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
Un archivo YAML tiene una estructura de árbol: algunos elementos están anidados en otros. Podemos controlar el anidamiento usando un cierto número de espacios, que usamos para indicar cada nivel. ¿Cuáles son las ventajas del formato YAML?
-
Legible por humanos. Nuevamente, incluso al ver un archivo YAML sin una descripción, puede comprender fácilmente los objetos que describe. YAML es tan legible por humanos que el sitio web yaml.org es un archivo YAML ordinario :)
-
Compacidad. La estructura del archivo se crea utilizando espacios: no es necesario utilizar corchetes ni comillas.
-
Soporte para estructuras de datos nativas para lenguajes de programación. La gran ventaja de YAML sobre JSON y muchos otros formatos es que admite varias estructuras de datos. Incluyen:
-
!!map
Un conjunto desordenado de pares clave-valor que no pueden tener duplicados; -
!!omap
Una secuencia ordenada de pares clave-valor que no pueden tener duplicados; -
!!pares:
una secuencia ordenada de pares clave-valor que pueden tener duplicados; - !!set
Una secuencia desordenada de valores que no son iguales entre sí; - !!seq
Una secuencia de valores arbitrarios;
¡Reconocerá algunas de estas estructuras de Java! :) Esto significa que varias estructuras de datos de lenguajes de programación se pueden serializar en YAML.
-
-
Posibilidad de usar ancla y alias
Estos marcadores le permiten identificar algún elemento en un archivo YAML y luego referirse a él en el resto del archivo si ocurre repetidamente. Se crea un ancla usando el símbolo & , y un alias se crea usando * .
Supongamos que tenemos un archivo que describe libros de León Tolstoi. Para evitar escribir el nombre del autor de cada libro, simplemente creamos el ancla leo y nos referimos a él usando un alias cuando lo necesitamos:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
Cuando se analiza este archivo, el valor "Leo Tolstoy" se sustituye en los lugares correctos donde tenemos nuestros alias.
- YAML puede incrustar datos en otros formatos. Por ejemplo, JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
Otros formatos de serialización
XML
Este formato se basa en un árbol de etiquetas.
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Cada elemento consta de una etiqueta de apertura y cierre (<> y </>). Cada elemento puede tener elementos anidados. XML es un formato común que es tan bueno como JSON y YAML (si hablamos de proyectos reales). Tenemos una lección separada sobre XML .
BSON (JSON binario)
Como su nombre lo indica, BSON es muy similar a JSON, pero no es legible por humanos y usa datos binarios. Como resultado, es muy bueno para almacenar y transferir imágenes y otros archivos adjuntos. Además, BSON admite algunos tipos de datos que no están disponibles en JSON. Por ejemplo, un archivo BSON puede incluir una fecha (en formato de milisegundos) o incluso una pieza de código JavaScript. La popular base de datos MongoDB NoSQL almacena información en formato BSON.Protocolo basado en la posición
En algunas situaciones, necesitamos reducir drásticamente la cantidad de datos enviados (por ejemplo, si tenemos muchos datos y necesitamos reducir la carga). En esta situación, podemos usar el protocolo basado en posición, es decir, enviar valores de parámetros sin los nombres de los propios parámetros.
"Leo Tolstoy" | "Anna Karenina" | 1873
Los datos en este formato ocupan varias veces menos espacio que un archivo JSON completo. Por supuesto, existen otros formatos de serialización, pero no es necesario que los conozca todos en este momento :) Es bueno si está familiarizado con los formatos estándar de la industria actual al desarrollar aplicaciones, y recuerda sus ventajas y cómo difieren de uno. otro. Y con esto, nuestra lección llega a su fin :) ¡No olvides resolver un par de tareas hoy! ¡Hasta la proxima vez! :)
GO TO FULL VERSION