- public void serialize(Object obj, HttpServletRequest request,
- HttpServletResponse response) {
- try {
- response.setContentType("application/json");
+ private Class<?> targetClass;
+
+ private Map<Class<?>, JsonDeserializer<?>> deserializers = new HashMap<Class<?>, JsonDeserializer<?>>();
+
+ @SuppressWarnings("unchecked")
+ public void afterPropertiesSet() throws Exception {
+ CustomDeserializerFactory dsf = new CustomDeserializerFactory();
+ for (Class clss : deserializers.keySet()) {
+ dsf.addSpecificMapping(clss, deserializers.get(clss));
+ if (log.isDebugEnabled())
+ log.debug("Add JSON mapping for " + clss);
+ }
+ StdDeserializerProvider sdp = new StdDeserializerProvider(dsf);
+ getObjectMapper().setDeserializerProvider(sdp);
+ // ignore unkown properties
+ getObjectMapper().getDeserializationConfig().addHandler(
+ new DeserializationProblemHandler() {
+ public boolean handleUnknownProperty(
+ DeserializationContext ctxt,
+ JsonDeserializer<?> deserializer, Object bean,
+ String propertyName) throws IOException,
+ JsonProcessingException {
+ if (log.isTraceEnabled())
+ log.debug("Ignore property " + propertyName);
+ ctxt.getParser().skipChildren();
+ return true;
+ }
+ });
+ }