HOWTO · Java

Como converter JSON para mapa em Java

Este artigo apresenta como converter o JSON para o mapa com bibliotecas Java.

Introduziremos como converter um JSON existente para um mapa em Java. O JSON é freqüentemente usado para estruturar os dados, mas às vezes temos que obter os valores JSON em algum outro tipo de dados e depois trabalhar com eles.

Várias bibliotecas são criadas para trabalhar com o JSON em Java. Veremos as duas bibliotecas de análise JSON mais utilizadas que nos permitem fazer muitas operações JSON.

Abaixo está o JSON no qual vamos trabalhar neste tutorial para uma melhor compreensão.

{
  "login" :
  {
    "userName" : "John Doe",
    "email" : "johndoe@john.com"
  }
}

Biblioteca para converter Jackson em JSON em Map em Java

Temos que incluir a dependência abaixo em nosso projeto para que os métodos e classes da biblioteca Jackson possam ser herdados.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.2</version>
    <scope>compile</scope>
</dependency>

Depois de adicionar a dependência, primeiro vamos obter o arquivo JSON local utilizando o método FileInputStream(),

Precisamos chamar ObjectMapper().readValue() da biblioteca Jackson para converter nosso JSON em Map. A função readValue(JSON, ClassType) toma dois argumentos, o JSON e o ClassType que queremos que o JSON seja formatado. Como queremos converter o JSON para o formato Map, utilizaremos o Hashmap.class.

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;

public class Main {
  public static void main(String[] args) throws IOException {
    InputStream getLocalJsonFile = new FileInputStream("/sample.json");

    HashMap<String, Object> jsonMap = new ObjectMapper().readValue(getLocalJsonFile, HashMap.class);
    System.out.println(jsonMap);
  }
}

Resultado:

{login={userName=John Doe, email=johndoe@john.com}}

GSON Biblioteca para converter JSON para Map em Java

Em primeiro lugar, devemos incluir a dependência de nosso projeto para incluir todos os métodos e classes da GSON em nossa aplicação.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

A GSON é uma biblioteca JSON amplamente utilizada, que analisaremos e converteremos em Java Map.

Gson().fromJson(json, type) espera dois argumentos, um dos quais é o arquivo JSON que podemos obter utilizando new JsonReader(new FileReader(jsonFilePath)) e o segundo argumento é o tipo para o qual queremos que o JSON seja convertido.

Confira o exemplo abaixo.

import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Map;

public class Main {
  public static void main(String[] args) throws IOException {
    JsonReader getLocalJsonFile = new JsonReader(new FileReader("/sample.json"));

    Type mapTokenType = new TypeToken<Map<String, Map>>() {}.getType();

    Map<String, String[]> jsonMap = new Gson().fromJson(getLocalJsonFile, mapTokenType);

    System.out.println(jsonMap);
  }
}

Resultado:

{login={userName=John Doe, email=johndoe@john.com}}