Jackson De / Serialización de fecha a cadena a fecha en mapas genéricos

Hay muchos ejemplos de código de Jackson a / from java.util.Date pero todos parecen aprovechar la anotación de POJO. Tengo mapas genéricos de escalares que deseo de / serializar a JSON. Esta es la configuración actual del deserializador; muy simple:

public class JSONUtils {
    static {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");

        mapper = new ObjectMapper();

        mapper.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true);
        mapper.setDateFormat(df);  // this works for outbounds but has no effect on inbounds

        mapper.getDeserializationConfig().with(df); // Gave this a shot but still does not sniff strings for a format that we declare should be treated as java.util.Date                           
  }
  public static Map<String,Object> parseJSON(InputStream is) {
    Map<String,Object> data = null;

    try {
        data = mapper.readValue(is, Map.class);
    } catch(Exception e) {
      // ...
    }

    return data;
}

Creo que un Dateerializer puede convertir java.util.Date en una cadena ISO 8601-ish. Va por el otro lado que me desconcierta. Claramente, en un documento JSON sin contexto, una cadena es una cadena, así que no puedo saber si fue una vez una fecha. Así que estoy preparado para eludir este tipo y examinar todas las cadenas que están deserializadas y si huelen a YYYY-MM-DDTHH: MM: SS.sss, haré un java.util.Fecha en lugar de solo devolver una cadena. Así dado:

{ "name": "buzz",
  "theDate": "2013-09-10T12:00:00.000"
}

rendirá

Map<String,Object> m = mapper.readValue(is, Map.class);
Object o1 = m.get("name");   // o1 is instanceof String
Object o2 = m.get("theDate");  // o2 is instanceof Date

Pero esto significa que el deserializador tiene que devolver dos tipos diferentes y no he podido averiguar cómo hacer esto en Jackson. ¿Alguien sabe de un ejemplo bueno y compacto que olfatee las cadenas con fecha y las convierta en Fechas, dejando a las demás como cadenas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta