- docx (formato Microsoft Word);
- pdf (formato Adobe);
- mobi (comumente usado em dispositivos Amazon Kindle);
- e muito mais (ePub, djvu, fb2, etc.).
JSON
Notação de objeto JavaScript. Você já conhece um pouco desse formato! Falamos sobre isso nesta lição e cobrimos a serialização em JSON aqui . Ele recebeu esse nome por um motivo. Objetos Java convertidos em JSON realmente se parecem exatamente com objetos em JavaScript. Você não precisa conhecer JavaScript para entender nosso objeto:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Não nos limitamos a enviar um único objeto. O formato JSON também pode representar uma 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
}
]
Como JSON representa objetos JavaScript, ele suporta os seguintes formatos de dados JavaScript:
- cordas;
- números;
- objetos;
- matrizes;
- booleanos (verdadeiro e falso);
- nulo.
-
Formato legível por humanos. Esta é uma vantagem óbvia se o usuário final for humano. Por exemplo, suponha que seu servidor tenha um banco de dados com uma programação de voos. Um cliente humano, sentado em seu computador em casa, solicita dados desse banco de dados usando um aplicativo da web. Como você precisa fornecer dados em um formato que ele possa entender, o JSON é uma ótima solução.
-
Simplicidade. É super simples :) Acima, demos um exemplo de dois arquivos JSON. E mesmo que você nunca tenha ouvido falar sobre JavaScript (e muito menos sobre objetos JavaScript), você pode entender facilmente o tipo de objetos descritos lá.
Toda a documentação do JSON consiste em uma página da Web com algumas fotos. -
Uso muito difundido. JavaScript é a linguagem de front-end dominante e tem seus próprios requisitos. Usar JSON é obrigatório. Portanto, um grande número de serviços da Web usa JSON como formato de troca de dados. Todo IDE moderno suporta o formato JSON (incluindo IntelliJ IDEA). Várias bibliotecas foram escritas para todos os tipos de linguagens de programação para permitir o trabalho com JSON.
YAML
Inicialmente, YAML significava "Yet Another Markup Language". Quando começou, posicionava-se como concorrente do XML. Agora, com o passar do tempo, YAML passou a significar "YAML não é linguagem de marcação". O que é isso exatamente? Vamos imaginar que precisamos criar 3 classes para representar personagens em um jogo de computador: Guerreiro, Mago e Ladrão. Eles terão as seguintes características: força, agilidade, resistência, um conjunto de armas. Veja como seria um arquivo YAML descrevendo nossas classes:
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
Um arquivo YAML possui uma estrutura em árvore: alguns elementos são aninhados em outros. Podemos controlar o aninhamento usando um certo número de espaços, que usamos para denotar cada nível. Quais são as vantagens do formato YAML?
-
Legível por humanos. Novamente, mesmo vendo um arquivo YAML sem uma descrição, você pode entender facilmente os objetos que ele descreve. YAML é tão legível que o site yaml.org é um arquivo YAML comum :)
-
Compacidade. A estrutura do arquivo é criada usando espaços: não há necessidade de usar colchetes ou aspas.
-
Suporte para estruturas de dados nativas para linguagens de programação. A grande vantagem do YAML sobre o JSON e muitos outros formatos é que ele oferece suporte a várias estruturas de dados. Eles incluem:
-
!!map
Um conjunto não ordenado de pares chave-valor que não podem ter duplicatas; -
!!omap
Uma sequência ordenada de pares chave-valor que não podem ter duplicatas; -
!!pairs:
Uma sequência ordenada de pares chave-valor que podem ter duplicatas; - !!set
Uma sequência não ordenada de valores que não são iguais entre si; - !!seq
Uma sequência de valores arbitrários;
Você reconhecerá algumas dessas estruturas de Java! :) Isso significa que várias estruturas de dados de linguagens de programação podem ser serializadas em YAML.
-
-
Capacidade de usar âncora e alias
Esses marcadores permitem identificar algum elemento em um arquivo YAML e, em seguida, fazer referência a ele no restante do arquivo, caso ocorra repetidamente. Uma âncora é criada usando o símbolo & , e um alias é criado usando * .
Suponha que tenhamos um arquivo descrevendo os livros de Leo Tolstoi. Para evitar escrever o nome do autor para cada livro, simplesmente criamos a âncora leo e nos referimos a ela usando um pseudônimo quando precisamos:
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
Quando este arquivo é analisado, o valor "Leo Tolstoy" é substituído nos lugares certos onde temos nossos aliases.
- YAML pode incorporar dados em outros formatos. Por exemplo, 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 } ]
Outros formatos de serialização
XML
Este formato é baseado em uma árvore de tags.
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Cada elemento consiste em uma tag de abertura e fechamento (<> e </>). Cada elemento pode ter elementos aninhados. XML é um formato comum tão bom quanto JSON e YAML (se estivermos falando de projetos reais). Temos uma lição separada sobre XML .
BSON (JSON binário)
Como o próprio nome indica, o BSON é muito semelhante ao JSON, mas não é legível por humanos e usa dados binários. Como resultado, é muito bom para armazenar e transferir imagens e outros anexos. Além disso, o BSON suporta alguns tipos de dados não disponíveis no JSON. Por exemplo, um arquivo BSON pode incluir uma data (no formato de milissegundos) ou até mesmo um trecho de código JavaScript. O popular banco de dados MongoDB NoSQL armazena informações no formato BSON.Protocolo baseado em posição
Em algumas situações, precisamos reduzir drasticamente a quantidade de dados enviados (por exemplo, se tivermos muitos dados e precisarmos reduzir a carga). Nesta situação, podemos usar o protocolo baseado em posição, ou seja, enviar valores de parâmetros sem os nomes dos próprios parâmetros.
"Leo Tolstoy" | "Anna Karenina" | 1873
Os dados neste formato ocupam várias vezes menos espaço do que um arquivo JSON completo. Claro, existem outros formatos de serialização, mas você não precisa saber todos eles agora :) É bom se você estiver familiarizado com os atuais formatos padrão da indústria ao desenvolver aplicativos e lembrar de suas vantagens e como eles diferem de um outro. E com isso nossa aula chega ao fim :) Não se esqueça de resolver algumas tarefas hoje! Até a próxima vez! :)
GO TO FULL VERSION