JSON a Java

Converteix JSON en Java POJO, DTO o classes de model de manera ràpida i porta el codi generat directament al teu IDE. Tot el procés es fa localment al navegador.

Relacionats

Per a què serveix el convertidor de JSON a Java?

El convertidor de JSON a Java analitza l'estructura del JSON i la transforma automàticament en classes Java POJO estàndard. Això evita haver d'escriure manualment package, import, camps private, getters i setters repetitius.

És especialment útil a Spring Boot, Android, MyBatis o en integracions amb APIs externes, quan cal convertir una resposta d'exemple en un model Java reutilitzable. Els objectes imbricats passen a ser classes separades i els arrays es mapegen com a `List<T>`.

L'eina de GeekFormat admet Gson, Jackson, Fastjson, Lombok, Serializable, Builder, estratègies de nom de camps i descàrrega ZIP. El codi generat es pot afegir directament al projecte.

Casos d'ús

  • Convertir JSON d'exemple d'una API Spring Boot en DTO i VO
  • Crear JavaBean per a Android o clients Java a partir de respostes API
  • Generar ràpidament models Jackson / Gson per integrar serveis externs
  • Fer servir Lombok per tenir POJO més curts i amb menys boilerplate
  • Descompondre JSON molt imbricat en classes Java més llegibles
  • Descarregar totes les classes en ZIP i importar-les a l'IDE

Com usar-ho

  1. Enganxa el JSON a l'esquerra, carrega un exemple o importa un fitxer `.json` / `.txt`
  2. A Settings defineix el nom de la classe arrel, el package, la biblioteca d'anotacions, l'estratègia de noms i les opcions Lombok / Serializable
  3. Espera la generació automàtica o prem Convert per revisar les classes Java a la dreta
  4. Copia les classes necessàries o descarrega-ho tot amb Download ZIP

Característiques

  • Suport per a diverses biblioteques d'anotacions: Gson, Jackson, Fastjson i Lombok
  • Simplificació amb Lombok: activa `@Data`, `@Builder` i constructors per reduir boilerplate
  • Estratègies de nom de camps: mantén el nom original o converteix snake_case a camelCase
  • Generació automàtica de classes imbricades: els objectes interns del JSON es transformen en classes Java separades
  • Arrays com a List<T>: el tipus dels elements es detecta automàticament
  • Opcions de codi addicional: `toString`, `equals`, `hashCode`, Serializable i constructors
  • Descàrrega ZIP de tots els fitxers: guarda diversos `.java` amb l'estructura de package corresponent
  • Processament local al navegador: el parseig JSON, la generació de codi i l'empaquetat ZIP es fan sense servidor

Exemples de codi

Exemple per inferir el tipus Java a partir d'un valor JSON amb JavaScript

javascript
function toJavaFieldType(value) {
  if (value === null) return 'Object';
  if (Array.isArray(value)) return 'List<Object>';
  if (typeof value === 'number') return Number.isInteger(value) ? 'Integer' : 'Double';
  if (typeof value === 'boolean') return 'Boolean';
  if (typeof value === 'string') return 'String';
  if (typeof value === 'object') return 'NestedType';
  return 'Object';
}

console.log(toJavaFieldType({ id: 1 }.id));
// => Integer

Exemple de generació de camps Java des de JSON amb Python

python
import json

def java_type(value):
    if value is None:
        return 'Object'
    if isinstance(value, bool):
        return 'Boolean'
    if isinstance(value, int):
        return 'Integer'
    if isinstance(value, float):
        return 'Double'
    if isinstance(value, str):
        return 'String'
    if isinstance(value, list):
        return 'List<Object>'
    if isinstance(value, dict):
        return 'NestedType'
    return 'Object'

sample = json.loads('{"name":"Alice","age":18}')
for key, value in sample.items():
    print(f'private {java_type(value)} {key};')

Exemple de POJO Lombok generat

java
import lombok.Data;
import lombok.Builder;

@Data
@Builder
public class User {
    private Integer id;
    private String name;
}

Preguntes freqients

Com puc convertir JSON a Java POJO?

Enganxa el JSON al panell esquerre i l'eina generarà les classes Java automàticament o en prémer Convert. Després pots copiar classes individuals o descarregar un ZIP amb tot el resultat.

Quines anotacions es poden generar?

Es poden generar `@SerializedName` per a Gson, `@JsonProperty` per a Jackson, `@JSONField` per a Fastjson i anotacions Lombok com `@Data` i `@Builder`.

Què passa amb els objectes JSON imbricats?

Cada objecte imbricat es converteix en una classe Java separada, i la classe pare conserva un camp d'aquell tipus. Això facilita treballar amb estructures profundes.

Els arrays es converteixen automàticament en List<T>?

Sí. Un array de cadenes es convertirà en `List<String>`, i un array d'objectes pot convertir-se en `List<User>`. Els arrays buits solen quedar com `List<Object>`.

Puc convertir snake_case a camelCase?

Sí. Si tries l'estratègia camelCase, `user_name` es convertirà en `userName`, i el nom original del JSON es pot mantenir dins de l'anotació.

Com queda el codi en mode Lombok?

Quan actives Lombok, l'eina genera classes més curtes amb `@Data`, `@Builder`, `@NoArgsConstructor` i `@AllArgsConstructor` en lloc de getters i setters manuals.

El resultat és útil per a Spring Boot?

Sí. Si selecciones Jackson o Lombok, les classes resultants encaixen bé com a DTO, models request/response i beans habituals dins de Spring Boot.

El meu JSON s'envia a cap servidor?

No. Tot s'executa localment al navegador, de manera que és més còmode treballar també amb JSON interns o sensibles.

Solució de problemes

Apareix l'error Invalid JSON

Comprova la sintaxi del JSON. Comes sobrants, cometes simples o claus sense cometes es poden corregir abans amb JSON Repair.

El tipus de l'array no s'infereix com espero

Els arrays buits o amb tipus barrejats sovint es converteixen en `List<Object>`. Per obtenir un resultat millor, posa un element representatiu al principi.

Els noms de camp continuen en snake_case

És possible que a Settings encara estigui seleccionat `asis`. Canvia-ho a camelCase i torna a generar el codi.

El codi Lombok no funciona a l'IDE

Afegeix la dependència de Lombok al projecte i activa annotation processing o el connector Lombok a l'IDE.

Un JSON gran genera massa classes

Per a estructures molt grans, és més còmode dividir el JSON en parts i generar-lo per etapes. Si cal, fes servir diversos models arrel.

Glossari

POJO
Plain Old Java Object, és a dir, un objecte Java normal sense dependència forta d'un framework, molt usat com a model de dades JSON.
JavaBean
Format clàssic de classe Java amb camps private, getters/setters i normalment constructor buit.
DTO
Data Transfer Object, classe usada per transportar dades entre capes, serveis o API.
Lombok
Biblioteca Java que genera getters, setters, builders i altre boilerplate a través d'anotacions.
@JsonProperty
Anotació de Jackson per mapar una clau JSON a un camp Java.
@SerializedName
Anotació de Gson per conservar el nom original de la clau JSON en mapar-la a un camp Java.
Serializable
Interfície marcador de Java que permet serialitzar un objecte per guardar-lo o transmetre'l.
List<T>
Tipus de col·lecció genèrica de Java que s'utilitza sovint per representar arrays JSON.

Mapatge entre tipus JSON i tipus Java

Valor JSONTipus JavaNotes
"Alice"StringCadena normal
18IntegerEnter
3.14DoubleNúmero decimal
[{...}]List<User>Array d'objectes → List<T>

Guia per triar biblioteca d'anotacions

BibliotecaAnotació principalQuan convé
Jackson@JsonPropertyMapatge JSON per defecte a Spring Boot
Gson@SerializedNameAndroid i serialització lleugera
Fastjson@JSONFieldProjectes Java que ja fan servir Fastjson
Lombok@Data / @BuilderPOJO més curts i amb menys boilerplate

Authoritative References