Cómo convertir Hashmap en un objeto JSON en Java

Rupam Yadav 12 octubre 2023
  1. new JSONObject(hashmap) para convertir Hashmap en un objeto JSON
  2. Biblioteca Jackson para convertir Hashmap en un objeto JSON
  3. Librería GSON para convertir el Hashmap en un objeto JSON
Cómo convertir Hashmap en un objeto JSON en Java

Este artículo muestra las formas de convertir un hashmap en un objeto JSON en Java. Veremos los ejemplos en detalle acerca de la creación de un hashmap y luego convertirlo en un objeto JSON.

Tanto el hashmap como el JSON son muy utilizados por los desarrolladores ya que nos ayudan a crear una estructura simple que puede ser utilizada tanto para almacenar como para transferir datos fácilmente.

new JSONObject(hashmap) para convertir Hashmap en un objeto JSON

La forma más tradicional de convertir un hashmap en un objeto JSON es llamando a JSONObject() y luego pasando el hashmap.

Echemos un vistazo a un ejemplo que crea un hashmap y luego lo imprime en formato JSON.

import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONObject;

public class Main {
  public static void main(String[] args) {
    Map<String, Object> map = new HashMap();

    map.put("key1", "value1");
    map.put("key2", "value2");

    JSONObject json = new JSONObject(map);
    System.out.printf("JSON: %s", json);
  }

Resultado:

JSON: {"key1":"value1","key2":"value2"}

Una cosa que hay que notar aquí es que Map<String, Object> toma una cadena, que es la key, y el Objeto, que es el value. Significa que podemos pasar cualquier objeto válido como un valor en el mapa y luego convertirlo en un objeto JSON.

Abajo hay un ejemplo que toma una cadena y una Arraylist como valor.

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONObject;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> stringArrayList = new ArrayList<>();
    stringArrayList.add("firstString");
    stringArrayList.add("secondString");
    stringArrayList.add("thirdString");

    Map<String, Object> map = new HashMap();
    map.put("key1", "value1");
    map.put("key2", "value2");
    map.put("stringList", stringArrayList);

    JSONObject json = new JSONObject(map);
    System.out.printf("JSON: %s", json);
  }

Resultado:

JSON: {"key1":"value1","key2":"value2","stringList":["firstString","secondString","thirdString"]}

Biblioteca Jackson para convertir Hashmap en un objeto JSON

Hay bibliotecas en Java que pueden ayudarnos a convertir nuestro hashmap en un objeto JSON con mucha flexibilidad.

Jackson es una de esas librerías que toma un map de Java y luego convierte el mapa en formato JSON.

No debemos olvidarnos de manejar la JsonProcessingException como ObjetoMapper().writeValueAsString(map) puede lanzar una excepción cuando encuentra un formato de datos incompatible.

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class Main {
  public static void main(String[] args) throws JsonProcessingException {
    Map<String, Object> map = new HashMap();
    map.put("key1", "value1");
    map.put("key2", "value2");

    String json = new ObjectMapper().writeValueAsString(map);
    System.out.printf("JSON: %s", json);
  }

Resultado:

JSON: {"key1":"value1","key2":"value2"}

Librería GSON para convertir el Hashmap en un objeto JSON

La biblioteca Gson es una de las más usadas para convertir un mapa de hachís en un objeto JSON. Proporciona métodos fáciles para trabajar en nuestro hashmap y JSON.

La clase Gson tiene un método toJsonTree, que toma nuestro mapa y lo convierte en un árbol JSON. Pero como necesitamos un objeto JSON, podemos usar toJSONObject() para hacer que el árbol JSON sea un objeto JSON.

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.util.HashMap;
import java.util.Map;

public class Main {
  public static void main(String[] args) {
    Map<String, Object> map = new HashMap();
    map.put("key1", "value1");
    map.put("key2", "value2");

    Gson gson = new Gson();
    JsonObject json = gson.toJsonTree(map).getAsJsonObject();

    System.out.printf("JSON: %s", json);
  }

Resultado:

JSON: {"key1":"value1","key2":"value2"}
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java JSON

Artículo relacionado - Java Hashmap