JSON em Java

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:

2.1. Jackson

2.2. Gson

2.3. json-io

2.4. Genson

3. Jackson

A seguir, vamos dar uma olhada no mais popular deles - Jackson. Jackson é uma biblioteca Java multiuso para processamento de dados JSON.

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.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.