Conhecendo a JSR 367: JSON-B (Binding)

http://twitter.com/carladebona/ — JSONB logo is created by UX/UI Designer

Neste post vamos conhecer um pouco sobre uma das novas API do Java EE 8 .

A api é similar ao Gson e Jackson .

Api já vem nos principais servidores de Aplicação :

e também pode se encontrado no micro framework JOOBY .

Esse post vai ser bem curto, somente para demostrar o seu uso.


Introdução a JSR 367 JSON-B (Binding)

O JSON-B é uma camada de ligação padrão para converter objetos Java em / de mensagens JSON.

Ele define um algoritmo de mapeamento padrão para converter classes Java existentes em JSON, enquanto permite que os desenvolvedores personalizem o processo de mapeamento por meio do uso de anotações Java.

O Eclipse Yasson é uma estrutura Java que fornece uma camada de ligação padrão entre classes Java e documentos JSON. Isso é semelhante ao que o JAXB está fazendo no mundo XML. Yasson é uma implementação de referência oficial do JSON Binding (JSR-367).

Bem feita essa rápida introdução sobre a API , vamos partir para construção do nosso projeto .


Maven Dependencies

Aqui vamos usar Java 8, então crie o seu projeto com o seguinte pom.xml :

aqui a gente vai esta usando o Java SE .

Além disso adicionamos alguns plugins para gerar nosso jar e importar as libs extras da nossa pequena aplicação .

Para serializar/desserializar um objeto Java de/para o JSON

Primeiramente vamos criar nossa classe vai ser serializada chamada Meetup.java :

Agora vamos criar uma Main e vamos da inicio ao uso do Json-B :

Na linha 14 é aonde criamos o nosso JsonB, dentro de create() é possível passar algumas configurações customizadas .

Em seguida criamos uma nova instancia de Meetup e colocamos os valores no construtor, até tudo simples .

Na linha 20 a gente devolve o nosso objeto meetup em um formato json, utilizando o método toJson() fazendo a serialização do nosso objeto e exibindo a seguinte saída :

Aqui saída em Json ,nada bonita, veremos como formatar isso em seguida .

A para retorna um objeto Meetup vamos pegar esse json de saida e alterar na classe main para :

Aqui na linha 22 pegamos no nosso objeto já criado e atribumos a chamada do fromJson() contendo o resultado da ultima execução e também passamos o seu tipo que no caso é Meetup.class , rodando de novo o Main temos o resultado :

Legal não ? Agora vamos ver algumas customizações .

Mapeamento customizado

Json-b permite fazermos algumas customizações tanto na formatação da saída quanto no atributos.

Primeiro vamos formatar a nossa saída usando a classe JsonbConfig na seguinte forma no nosso Main :

Então na linha 15 criamos um JsonConfig e definimos que queremos que a saída seja formatada conforme a imagem :

Na JsonConfig possui outros tipos de customização, então vale a pena olha a sua documentação .

Agora vamos formatar alguns atributos em nossa classe Meetup :

Aqui adicionamos duas anotações :

1 — @JsonProperty que é utilizada para trocarmos o nome da propriedade em particular

2 — @JsonDateFormat , utilizada para formatar a nossa no Json conforme a imagem :

Bem isso é tudo, espero que os leitores tenham gostado de conhecer o Json-B , explore mais aqui -> { https://javaee.github.io/jsonb-spec/users-guide.html }

Código fonte =https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/ProjetoJSR367