JSON em Java
1. Visão geral
Working with JSON data in Java can be easy, mas - como quase tudo em Java - existem muitas opções e bibliotecas que podemos escolher.
Este guia deve facilitar essa escolha e fornecer uma sólida compreensão do ecossistema no momento. Discutiremos as bibliotecas de processamento JSON mais comuns em Java:
Estamos seguindo uma estrutura simples para cada biblioteca - primeiro alguns recursos úteis para começar (tanto aqui no exemplo como externos). Então, vamos passar dea basic code example, só para ver como é realmente o trabalho com a biblioteca.
2. Popularidade e estatísticas básicas
Primeiro, vamos começar com algumas estatísticas como um proxy para a popularidade de cada biblioteca:
3. Jackson
A seguir, vamos dar uma olhada no mais popular deles - Jackson. Jackson é uma biblioteca Java multiuso para processamento de dados JSON.
3.1. Recursos úteis
Aqui estão alguns recursos oficiais da biblioteca:
No exemplo:
Outros comentários interessantes:
3.2. Dependência do Maven
Para usar a biblioteca - aqui está a dependência Maven para adicionar em seupom.xml:
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
Observe quethe latest version de Jackson agora é2.6.3.
3.3. Exemplo Simples com Jackson
Agora, vamos ver como usar Jackson em um exemplo simples:
@Test
public void whenSerializeAndDeserializeUsingJackson_thenCorrect()
throws IOException{
Foo foo = new Foo(1,"first");
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(foo);
Foo result = mapper.readValue(jsonStr, Foo.class);
assertEquals(foo.getId(),result.getId());
}
Observe que:
-
ObjectMapper.writeValueAsString() é usado para serializar Objeto para string JSON.
-
ObjectMapper.readValue() é usado para desserializar a string JSON para o objeto Java.
-
Saída JSON de amostra:
{
"id":1,
"name":"first"
}
4. Gson
Gson é a próxima biblioteca Java JSON que veremos.
4.1. Recursos úteis
Aqui estão alguns recursos oficiais da biblioteca:
No exemplo:
Outros comentários interessantes:
4.2. Dependência do Maven
com.google.code.gson
gson
${gson.version}
Observe quethe latest version de Gson agora é2.4.
4.3. Exemplo Simples com Gson
Aqui está um exemplo simples para esclarecer como usar o Gson para serializar / dessrializar o JSON:
@Test
public void whenSerializeAndDeserializeUsingGson_thenCorrect(){
Gson gson = new Gson();
Foo foo = new Foo(1,"first");
String jsonStr = gson.toJson(foo);
Foo result = gson.fromJson(jsonStr, Foo.class);
assertEquals(foo.getId(),result.getId());
}
Observe que:
-
Gson.toJson() é usado para serializar objeto para JSON
-
Gson.fromJson() é usado para dessrializar JSON para objeto Java
5. Json-io
Json-io é uma biblioteca Java simples para serializar / desserializar JSON.
5.1. Recursos úteis
Aqui estão alguns recursos oficiais da biblioteca:
5.2. Dependência do Maven
com.cedarsoftware
json-io
${json-io.version}
Observe quethe latest version de json-io agora é4.1.9.
5.3. Exemplo simples com json-io
Agora, vamos dar uma olhada em um exemplo simples de uso de json-io:
@Test
public void whenSerializeAndDeserializeUsingJsonio_thenCorrect(){
Foo foo = new Foo(1,"first");
String jsonStr = JsonWriter.objectToJson(foo);
Foo result = (Foo) JsonReader.jsonToJava(jsonStr);
assertEquals(foo.getId(),result.getId());
}
Observe que:
-
JsonWriter.objectToJson() é usado para serializar Object para JSON.
-
JsonReader.jsonToJava() é usado para desserializar Json para objeto Java.
-
Saída JSON de amostra:
{
"@type":"org.example.Foo",
"id":1,
"name":"first"
}
6. Genson
Genson é uma biblioteca de conversão Java e Scala para JSON, que fornece ligação de dados e streaming completos.
6.1. Recursos úteis
Aqui estão alguns recursos oficiais da biblioteca:
6.2. Dependência do Maven
com.owlike
genson
${genson.version}
Observe quethe latest version de Genson agora é1.3.
6.3. Exemplo Simples com Genson
Aqui está um exemplo simples de como trabalhar com a biblioteca:
@Test
public void whenSerializeAndDeserializeUsingGenson_thenCorrect(){
Genson genson = new Genson();
Foo foo = new Foo(1,"first");
String jsonStr = genson.serialize(foo);
Foo result = genson.deserialize(jsonStr, Foo.class);
assertEquals(foo.getId(),result.getId());
}
Observe que:
-
Genson.serialize() é usado para serializar objeto para JSON
-
Genson.desrialize() é usado para desserializar JSON para objeto Java
7. Conclusão
Neste artigo de visão geral rápida, aprendemos sobre as bibliotecas de processamento JSON mais comuns em Java.