@@ -567,12 +567,16 @@ más información referente a los alumnos:
567567 }
568568
569569 Los datos de los alumnos no tienen la misma confidencialidad, así que nos podría
570- interesar proporcionar más o menos información. Para ello se definen tres
571- * vistas * de menor a mayor confidencialidad:
570+ interesar proporcionar más o menos información. Para ello primero tenemos que
571+ definir nosotros varias vistas de menor a mayor confidencialidad:
572572
573- + Views.Public
574- + Views.Internal
575- + Views.Admin
573+ .. code-block :: java
574+
575+ public class Views {
576+ public static class Public {} /* Menos confidencial */
577+ public static class Private extends Public {}
578+ public static class Internal extends Private {} /* Más confidencial */
579+ }
576580
577581 Al anotar la clase podemos indicar a qué vista queremos que pertenezca el
578582atributo:
@@ -584,23 +588,23 @@ atributo:
584588 @JsonView (Views . Public . class)
585589 private String nombre;
586590
587- // No pertenece a ninguna vista así que se muestra siempre .
591+ // Sin vista sólo se mostrará cuando no se activa ninguna vista .
588592 private LocalDate fechaNacimiento;
589593
590- @JsonView (Views . Internal . class)
594+ @JsonView (Views . Private . class)
591595 private int telefono;
592596
593- @JsonView (Views . Admin . class)
597+ @JsonView (Views . Internal . class)
594598 private String dni;
595599 }
596600
597601 Definida la *vista * de cada atributo, en el momento de serializar podemos
598602indicar al objeto |ObjectWriter | qué vista debe escribir. En nuestro ejemplo:
599603
600- + Sin vista, sólo se serializará sólo ``fechaNacimiento ``.
601- + Con Views.Public se serializará `` fechaNacimiento `` y ``nombre ``.
602- + Con Views.Internal se añadirá a las anteriores el teléfono.
603- + Con Views.Admin se serializarán todos los atributos .
604+ + Sin vista, sólo se serializará ``fechaNacimiento ``\ [ # ]_ .
605+ + Con `` Views.Public `` se serializará ``nombre ``.
606+ + Con `` Views.Private `` se añadirá `` telefono ``
607+ + Con `` Views.Internal `` se serializarán todos los asociados a vista .
604608
605609Para escribir con vistas, simplemente, debemos crear un *writer * y ajustar la
606610vista:
@@ -658,6 +662,11 @@ El otro mecanismo para filtrar atributos es usar **filtros**:
658662 De hecho, la traducción a tiempo *UNIX * era el comportamiento predeterminado
659663 en *Jackson 2 *.
660664
665+ .. [# ] En realidad, el comportamiento depende de
666+ :jackson-databind: `MapperFeature.DEFAULT_VIEW_INCLUSION <MapperFeature> `. Por
667+ defecto está a ``false ``. Si estuviera a ``true `` siempre los atributos no
668+ asociados a ninguna vista, se mostrarían en cualquier vista.
669+
661670 .. |JSON | replace :: :abbr: `JSON ( JavaScript Object Notation ) `
662671.. |Date | replace :: :java-util: `Date <Date> `
663672.. |LocalDate | replace :: :java-time: `LocalDate <LocalDate> `
0 commit comments