/** * * @param objectMapper * @param typeImpls * @return */ public static ObjectMapper withTypes(ObjectMapper objectMapper, Map<String, String> typeImpls) { SimpleAbstractTypeResolver abstractTypeResolver = new SimpleAbstractTypeResolver(); SimpleModule simpleModule = new SimpleModule(); simpleModule.setAbstractTypes(abstractTypeResolver); for (Map.Entry<String, String> types : typeImpls.entrySet()) { try { Class interfaceClazz = Class.forName(types.getKey()); if (!interfaceClazz.isInterface()) throw new IllegalArgumentException( "Class key must be an interface. Found " + interfaceClazz.getSimpleName()); Class implClazz = Class.forName(types.getValue()); if (Modifier.isAbstract(implClazz.getModifiers()) || implClazz.isInterface()) throw new IllegalArgumentException("Class value must be a concrete implementation. Found " + implClazz.getSimpleName()); abstractTypeResolver.addMapping(interfaceClazz, implClazz); } catch (Exception e) { e.printStackTrace(); } } objectMapper.registerModule(simpleModule); return objectMapper; }
private static ObjectMapper initMapper(JsonFactory factory) { ObjectMapper om = new ObjectMapper(factory); om.registerModule(new JodaModule()); om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); om.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); om.enable(SerializationFeature.INDENT_OUTPUT); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE); om.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); return om; }
private static void configureMapper(ObjectMapper ret) { ret.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); ret.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); ret.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true); ret.enable(SerializationFeature.INDENT_OUTPUT); SimpleModule customDeserializerModule = new SimpleModule(); customDeserializerModule.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { //Use our custom deserializers to handle backward compatibility for updaters -> IUpdater if (beanDesc.getBeanClass() == MultiLayerConfiguration.class) { return new MultiLayerConfigurationDeserializer(deserializer); } else if (beanDesc.getBeanClass() == ComputationGraphConfiguration.class) { return new ComputationGraphConfigurationDeserializer(deserializer); } return deserializer; } }); ret.registerModule(customDeserializerModule); registerSubtypes(ret); }
private static ObjectMapper configureMapper(ObjectMapper ret) { ret.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); ret.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); ret.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, false); ret.enable(SerializationFeature.INDENT_OUTPUT); SimpleModule atomicModule = new SimpleModule(); atomicModule.addSerializer(AtomicDouble.class,new JsonSerializerAtomicDouble()); atomicModule.addSerializer(AtomicBoolean.class,new JsonSerializerAtomicBoolean()); atomicModule.addDeserializer(AtomicDouble.class,new JsonDeserializerAtomicDouble()); atomicModule.addDeserializer(AtomicBoolean.class,new JsonDeserializerAtomicBoolean()); ret.registerModule(atomicModule); //Serialize fields only, not using getters ret.setVisibilityChecker(ret.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); return ret; }