¿Cómo obtener la lista de propiedades de una clase tal como Jackson la ve?
Estoy escribiendo un código que necesita acceder a la lista de propiedades de una clase según lo definido por una configuración de Jackson.
Por ejemplo, para la siguiente clase:
@JsonIgnoreProperties(value = { "intValue" })
public class MyDto {
@JsonProperty("name")
private String stringValue;
private int intValue;
private long longValue;
@JsonIgnore
private boolean booleanValue;
// standard setters and getters are not shown
}
Yo conseguiría[name,longValue]
porque esas son las propiedades que Jackson realmente considera al serializar.
No creo que escribir un código completo para buscar captadores / setters e inspeccionar las anotaciones de Jackson sea el camino a seguir, ya que eso sería reimplementar a Jackson.
Si soy capaz de manejar el JacksonObjectMapper
utilizado para la serialización, ¿hay alguna manera de obtener una lista de propiedades de unClass<?>
oType
¿objeto? (respetando las anotaciones y la configuración de Jackson)
Estudié un poco la implementación de Jackson y encontré elPOJOPropertiesCollector
, pero no estoy seguro de cómo puedo usarlo desde fuera de Jackson (se supone que no debemos hacer esto).
Como último recurso, podría crear una instancia de la clase que estoy inspeccionando, serializarla con el ObjectMapper y luego analizar el JSON para encontrar nombres de propiedades, pero tampoco creo que esto esté limpio (y traería su conjunto completo de problemas: los valores nulos pueden no ser serializados, lo que sucede en el constructor, etc.).
¿Algunas ideas?