sólo puedo pensar en una solución no-Jackson, de utilizar una clase base que no tiene referencias para el mapeo y luego arrojado a la clase real:
// expect a B on an incoming request
class B {
// ...
}
// after the data is read, cast to A which will have empty references
class A extends B {
public Map<String,List<String>> references;
}
¿Por qué incluso envías las referencias si no las quieres?
¿O los datos entrantes están fuera de sus manos y solo desea evitar la excepción de asignación que le indica que jackson no puede encontrar una propiedad para establecer para las referencias entrantes? Para que utilizamos una clase base que todas nuestras clases del modelo Json heredan:
public abstract class JsonObject {
@JsonAnySetter
public void handleUnknown(String key, Object value) {
// for us we log an error if we can't map but you can skip that
Log log = LogFactory.getLog(String.class);
log.error("Error mapping object of type: " + this.getClass().getName());
log.error("Could not map key: \"" + key + "\" and value: \"" + "\"" + value.toString() + "\"");
}
Luego, en el POJO que añadir @JsonIgnoreProperties
por lo que las propiedades entrantes son reexpedidos a handleUnknown()
@JsonIgnoreProperties
class A extends JsonObject {
// no references if you don't need them
}
Editar
This SO Thread describe cómo usar Mixins. Esta podría ser la solución, si desea mantener su estructura exactamente como está, pero no lo he intentado.
Así es. La información entrante no está realmente en nuestras manos. Pero el cliente envía siempre el atributo de referencias en el formato correcto para que nunca se invoque handleUnknown. – guerilla
Ah, mi mal, olvidé un poco de información. Necesitas '@ JsonIgnoreProperties' en el POJO si quieres ignorar los datos entrantes. Actualizaré mi publicación. (PD: usamos esto para consumir el recurso REST de Facebook y todas las propiedades enviadas desde Facebook que no están contenidas en nuestro POJO se registrarán y luego decidiremos si queremos agregarlas o no) – Pete
Pero las referencias están en mi POJO por lo que siempre coincide con el colocador – guerilla