Herramienta de Tool Kumar

JSON a Java

Convierte un ejemplo de API en records de Java para Jackson. La raíz es un único record público y los records anidados se declaran dentro de él para que puedas guardar la salida en Root.java.

Cómo usar esta herramienta

  1. Pega una respuesta representativa que incluya registros cuyos campos difieran.
  2. Revisa la salida generada y cambia el nombre raíz si es necesario.
  3. Copia o descarga el código y comprueba después los tipos con el contrato de tu API.

Ejemplo práctico

Esta salida procede del conversor integrado. Los dos precios permiten inferir un campo de coma flotante; los valores null y de cadena de note permiten inferir un campo que admite null.

Entrada

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

Salida

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

public record Root(
    @JsonProperty("user-id") long userId,
    Profile profile,
    List<Item> items
) {
    public record Profile(String city, @JsonProperty("created_at") String createdAt) {}

    public record Item(double price, String note) {}
}

Usar el record con Jackson

Guarda la salida predeterminada como Root.java. Jackson construye los componentes del record a partir de las propiedades JSON. Un record anidado como Item está disponible como Root.Item.

La salida no contiene una declaración de paquete. Añade el paquete que usa tu aplicación. Registra tus módulos habituales de Jackson si cambias las fechas a tipos java.time.

import com.fasterxml.jackson.databind.ObjectMapper;

Root model = new ObjectMapper().readValue(responseBody, Root.class);

Opciones y casos especiales

  • Esta opción genera records, no POJO mutables con setters. Usa Java 16 o posterior y una versión de Jackson compatible con records, como la 2.12 o posterior.
  • Los componentes de un record renombrados o con nombres reservados reciben @JsonProperty con la clave original. Los arrays de objetos anidados se convierten en List<Item>.
  • Los enteros usan long, los enteros grandes fuera del rango de 64 bits con signo usan BigInteger y las fracciones usan double. Los tipos primitivos que admiten null usan clases envoltorio como Long.
  • Los campos que solo contienen null o mezclan tipos usan Object. Las fechas siguen siendo String. Usa BigDecimal y un mapeo revisado cuando necesites aritmética decimal exacta.

Privado por defecto

Tu documento permanece en este navegador. Tool Kumar analiza, convierte y crea las descargas en tu dispositivo, sin cuenta ni pasos para subir archivos.

Preguntas sobre JSON a Java

¿El conversor de JSON a Java genera POJO?
Genera records inmutables de Java. Si necesitas POJO de Java 8, setters o un constructor sin argumentos, adapta la salida o usa un generador para ese estilo de modelo.
¿Para qué biblioteca JSON genera código?
Jackson. El conversor importa @JsonProperty cuando necesita conservar una clave que difiere del nombre del componente de Java.
¿Puedo guardar todos los tipos anidados en un archivo?
Sí. El record raíz público contiene records públicos anidados, por lo que la salida predeterminada para un objeto cabe en Root.java.
¿Cómo deserializo el record?
Usa ObjectMapper.readValue(responseBody, Root.class) con una versión de Jackson compatible con records. Revisa el tratamiento de fechas y los límites numéricos de tu API.

Herramientas relacionadas

JSON a data classes de Kotlin, JSON a clases C# y Generador de JSON Schema.