@Test public void renderWithCustomSerializerLocatedByFactory() throws Exception { SerializerFactory factory = new DelegatingSerializerFactory(null); ObjectMapper mapper = new ObjectMapper(); mapper.setSerializerFactory(factory); view.setObjectMapper(mapper); Object bean = new TestBeanSimple(); Map<String, Object> model = new HashMap<>(); model.put("foo", bean); model.put("bar", new TestChildBean()); view.render(model, request, response); String result = response.getContentAsString(); assertTrue(result.length() > 0); assertTrue(result.contains("\"foo\":{\"testBeanSimple\":\"custom\"}")); validateResult(); }
/** * Ensure only bindable and non-cyclic bean properties are reported. * @param mapper the object mapper */ private void applySerializationModifier(ObjectMapper mapper) { SerializerFactory factory = BeanSerializerFactory.instance .withSerializerModifier(new GenericSerializerModifier()); mapper.setSerializerFactory(factory); }
objectMapper.setSerializerFactory(serializerFactory); objectMapper.setDeserializerProvider(new StdDeserializerProvider(deserializerFactory));
public static ObjectMapper generateErrorContractObjectMapper(boolean excludeEmptyMetadataFromJson, boolean serializeErrorCodeFieldAsIntegerIfPossible) { return new ObjectMapper().setSerializerFactory( new ErrorContractSerializationFactory(null, excludeEmptyMetadataFromJson, serializeErrorCodeFieldAsIntegerIfPossible) ); }
public static void init(DateFormateMeta dateFormateMeta){ normaMapper = new ObjectMapper(); //反序列化时,属性不存在时忽略属性 normaMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); normaMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); normaMapper.setDateFormat(dateFormateMeta.toDateFormat()); normaMapper.setSerializerFactory(new DefaultEntityCustomSerializationFactory()); esBaseDataFilterMapper = new ObjectMapper(); //反序列化时,属性不存在时忽略属性 esBaseDataFilterMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); esBaseDataFilterMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); esBaseDataFilterMapper.setDateFormat(dateFormateMeta.toDateFormat()); esBaseDataFilterMapper.setSerializerFactory(new ESBaseDataEntityCustomSerializationFactory()); esIdFilterMapper = new ObjectMapper(); //反序列化时,属性不存在时忽略属性 esIdFilterMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); esIdFilterMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); esIdFilterMapper.setDateFormat(dateFormateMeta.toDateFormat()); esIdFilterMapper.setSerializerFactory(new ESIdEntityCustomSerializationFactory()); } public static String object2json(Object bean){
public static void init(DateFormateMeta dateFormateMeta){ normaMapper = new ObjectMapper(); //反序列化时,属性不存在时忽略属性 normaMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); normaMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); normaMapper.setDateFormat(dateFormateMeta.toDateFormat()); normaMapper.setSerializerFactory(new DefaultEntityCustomSerializationFactory()); esBaseDataFilterMapper = new ObjectMapper(); //反序列化时,属性不存在时忽略属性 esBaseDataFilterMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); esBaseDataFilterMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); esBaseDataFilterMapper.setDateFormat(dateFormateMeta.toDateFormat()); esBaseDataFilterMapper.setSerializerFactory(new ESBaseDataEntityCustomSerializationFactory()); esIdFilterMapper = new ObjectMapper(); //反序列化时,属性不存在时忽略属性 esIdFilterMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); esIdFilterMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); esIdFilterMapper.setDateFormat(dateFormateMeta.toDateFormat()); esIdFilterMapper.setSerializerFactory(new ESIdEntityCustomSerializationFactory()); } public static String object2json(Object bean){
/** * Associates all maps with our custom serialization mechanism, which will transform them into arrays of arrays * @see MapAsArraySerializer * @return */ @Produces public SerializerFactory createSerializerFactory() { CustomSerializerFactory customized = new CustomSerializerFactory(); customized.addGenericMapping(Map.class, new MapAsArraySerializer()); return customized; } public @Produces ObjectMapper createMapper() { ObjectMapper jsonMapper = new ObjectMapper(); // .... // now configure serializer jsonMapper.setSerializerFactory(createSerializerFactory()); // .... return jsonMapper; }
public static ObjectMapper createObjectMapper( BeanSerializerModifier modifier) { ObjectMapper mapper = new ObjectMapper() .setSerializationInclusion(JsonInclude.Include.NON_NULL) .setVisibility(PropertyAccessor.ALL, Visibility.NONE) .setVisibility(PropertyAccessor.FIELD, Visibility.ANY) .registerModule(ChartEnumSerializer.getModule()) .registerModule(StopSerializer.getModule()) .registerModule(TimeUnitMultiplesSerializer.getModule()) .registerModule(SolidColorSerializer.getModule()) .registerModule(AxisListSerializer.getModule()) .registerModule(PaneListSerializer.getModule()) .registerModule(DateSerializer.getModule()) .registerModule(InstantSerializer.getModule()); // serializer modifier used when basic serializer isn't enough return mapper.setSerializerFactory( mapper.getSerializerFactory().withSerializerModifier(modifier)); }
public JacksonObjectMapper() { super(); //设置地点为中国 super.setLocale(CHINA); //去掉默认的时间戳格式 super.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); //设置为中国上海时区 super.setTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault())); //序列化时,日期的统一格式 super.setDateFormat(new SimpleDateFormat(DateUtil.PATTERN_DATETIME, Locale.CHINA)); //序列化处理 super.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true); super.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true); super.findAndRegisterModules(); //失败处理 super.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); super.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //单引号处理 super.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); //反序列化时,属性不存在的兼容处理s super.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); //序列化处理 super.setSerializerFactory(this.getSerializerFactory().withSerializerModifier(new BladeBeanSerializerModifier())); super.getSerializerProvider().setNullValueSerializer(BladeBeanSerializerModifier.NullJsonSerializers.STRING_JSON_SERIALIZER); //日期格式化 super.registerModule(new BladeJavaTimeModule()); super.findAndRegisterModules(); }
objectMapper.setSerializerFactory( objectMapper.getSerializerFactory().withSerializerModifier( beanSerializerModifier
private static ObjectMapper initWriteObjectMapper(ObjectMapper readObjectMapper) { // 拷贝 readObjectMapper ObjectMapper writeObjectMapper = readObjectMapper.copy(); // null 处理 writeObjectMapper.setSerializerFactory(writeObjectMapper.getSerializerFactory().withSerializerModifier(new BladeBeanSerializerModifier())); writeObjectMapper.getSerializerProvider().setNullValueSerializer(BladeBeanSerializerModifier.NullJsonSerializers.STRING_JSON_SERIALIZER); return writeObjectMapper; }
@Test public void simpleTradeOverrideMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializerFactory(BeanSerializerFactory.instance); converter = new Jackson2JsonMessageConverter(mapper); ((DefaultJackson2JavaTypeMapper) this.converter.getJavaTypeMapper()) .setTrustedPackages(TRUSTED_PACKAGE); Message message = converter.toMessage(trade, new MessageProperties()); SimpleTrade marshalledTrade = (SimpleTrade) converter.fromMessage(message); assertEquals(trade, marshalledTrade); }