Volver a la página principal
martes 1 abril 2025
2

Cómo filtrar JSON en Spring Boot con JsonFilter

El uso de JsonFilter en Spring Boot permite controlar qué propiedades de un objeto se incluyen al serializarlo a JSON. Esto es útil cuando deseas ocultar o mostrar campos específicos según el contexto, mejorando la seguridad y optimizando la respuesta JSON.

¿Qué es JsonFilter en Spring Boot?

JsonFilter es una anotación proporcionada por la biblioteca Jackson, que Spring Boot usa internamente para manejar JSON. Permite definir filtros dinámicos que seleccionan qué propiedades de un objeto se deben incluir en la respuesta JSON. Esto es útil cuando deseas controlar la visibilidad de ciertos campos sin modificar la clase de datos.

Sintaxis de JsonFilter

Para usar JsonFilter, debes seguir estos pasos:

1. Anota tu clase con @JsonFilter y proporciona un identificador único.

2. Configura el filtro dinámico en el controlador o servicio antes de la serialización.

Ejemplo de Uso de JsonFilter

Supongamos que tienes una clase Usuario:

package com.example.demo.model;

import com.fasterxml.jackson.annotation.JsonFilter;

@JsonFilter("usuarioFilter")
public class Usuario {
    private Long id;
    private String nombre;
    private String email;
    private String contraseña;

    // Getters y Setters
}

En tu controlador, aplica el filtro dinámico:

package com.example.demo.controller;

import com.example.demo.model.Usuario;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UsuarioController {

    @GetMapping("/usuario")
    public String obtenerUsuario() throws Exception {
        Usuario usuario = new Usuario();
        usuario.setId(1L);
        usuario.setNombre("Juan");
        usuario.setEmail("juan@example.com");
        usuario.setContraseña("secreto");

        // Configuración del filtro
        ObjectMapper mapper = new ObjectMapper();
        SimpleFilterProvider filtros = new SimpleFilterProvider()
                .addFilter("usuarioFilter", SimpleBeanPropertyFilter.serializeAllExcept("contraseña"));

        mapper.setFilterProvider(filtros);
        return mapper.writeValueAsString(usuario);
    }
}

Salida JSON

{
    "id": 1,
    "nombre": "Juan",
    "email": "juan@example.com"
}

Como puedes ver, el campo contraseña se ha excluido gracias a JsonFilter.

Tabla de Parámetros

Parámetro Tipo Descripción
@JsonFilter("id") String Nombre del filtro usado en la configuración
SimpleBeanPropertyFilter Clase Permite incluir o excluir propiedades dinámicamente
serializeAllExcept Método Excluye las propiedades especificadas

Más Ejemplos de JsonFilter en Spring Boot

1. Filtrado Múltiple:

Puedes definir varios filtros si tu aplicación lo requiere.

2. Filtrado Condicional:

Ajusta dinámicamente las propiedades según la lógica de negocio.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer