Como adicicionar JSON-B à sua aplicação
No momento da escrita desse artigo o JSON-B está em beta e para usar o mesmo precisamos configurar o repositório maven onde está localizado o JSON-B..
Ao configurar o JSON-B, precisamos conhecer 3 principais classes:
- javax.json.bind.JsonbConfig: Configura aspectos gerais do parsing de json permitindo configurar a forma que o Json será criado;
- javax.json.bind.JsonbBuilder: Cria objetos Jsonb;
- javax.json.bindJsonb: O ponto de entrada para a realização do parsing.
Usando JSON-B
Usar JSON-B é muito simples e a ideia é transformar uma representação em JSON em um objeto Java. Então, seja o seguinte JSON:
{
"id": 10,
"nome": "William",
"idade": 28
}
Isso se traduziria para a classe pessoa (que você pode ver um pouco mais abaixo), que deve ser o padrão Java Bean. Para usar o Jsonb, simplesmente passamos a fonte do conteúdo JSON, que pode ser um inputstream (que é fechado automaticamente após o jsonb ler o mesmo), um Reader ou até mesmo uma String com o JSON. Ou seja, digamos que o JSON acima está em um arquivo chamado pessoa.json e queremos transformar ele em pessoa, poderíamos usar as seguintes linhas de código:
Jsonb jsonb = JsonbBuilder.create();
InputStream arquivoPessoa = TestesJSONB.class.getResourceAsStream("/pessoa.json");
Pessoa pessoa = jsonb.fromJson(arquivoPessoa, Pessoa.class);
Sim, 3 linhas e lemos o arquivo para um objeto Java. O caminho contrário seria ainda mais simples:
pessoa = new Pessoa(20, "Antônio", 1);
String json = jsonb.toJson(pessoa);
Isso resultaria no seguinte JSON:
{"id":20,"idade":1,"nome":"Antônio"}
Veja que bacana. para imprimir um JSON formatado, simplesmente usamos o JsonbConfig:
JsonbConfig conf = new JsonbConfig();
conf.withFormatting(true);
jsonb = JsonbBuilder.create(conf);
pessoa = new Pessoa(20, "Antônio", 1);
String json = jsonb.toJson(pessoa);
Isso resulta em:
{
"id":20,
"idade":1,
"nome":"Antônio"
}
Agora temos a parte mais "complicada", que é quando temos que transformar listas JSON. Para isso, precisamos do tipo generico da lista. Então, seja o seguinte conteúdo do arquivo pessoas.json:
[
{"id":10,"idade":28,"nome":"William"},
{"id":20,"idade":1,"nome":"Antônio"}
]
Para transformar para a lista, precisamos do tipo, o tipo é meio chato de pegar, mas segue como funciona localmente.
Type LISTA_PESSOA_TIPO = new ArrayList<Pessoa>() {}.getClass().getGenericSuperclass();
InputStream arquivoPessoas = TestesJSONB.class.getResourceAsStream("/pessoas.json");
List<Pessoa> pessoas = jsonb.fromJson(arquivoPessoas, LISTA_PESSOA_TIPO);
System.out.println(pessoas);
Essa parte ainda ficou um pouco emboladinha, mas podemos esperar melhorias, pois o JSON-B ainda é beta.
Veja o código usado hoje abaixo e o projeto completo no nosso github.
velho aqui um curso super barato e java EE vale muito apena dar uma olhada e verificar se vale a pena comprar ou não.
ResponderExcluirhttps://go.hotmart.com/T5607085N