/** * Convenience method that is equivalent to calling *<pre> * enableDefaultTyping(DefaultTyping.OBJECT_AND_NON_CONCRETE); *</pre> *<p> * NOTE: use of Default Typing can be a potential security risk if incoming * content comes from untrusted sources, and it is recommended that this * is either not done, or, if enabled, use {@link #setDefaultTyping} * passing a custom {@link TypeResolverBuilder} implementation that white-lists * legal types to use. */ public ObjectMapper enableDefaultTyping() { return enableDefaultTyping(DefaultTyping.OBJECT_AND_NON_CONCRETE); }
/** * Creates {@link GenericJackson2JsonRedisSerializer} and configures {@link ObjectMapper} for default typing using the * given {@literal name}. In case of an {@literal empty} or {@literal null} String the default * {@link JsonTypeInfo.Id#CLASS} will be used. * * @param classPropertyTypeName Name of the JSON property holding type information. Can be {@literal null}. */ public GenericJackson2JsonRedisSerializer(@Nullable String classPropertyTypeName) { this(new ObjectMapper()); // simply setting {@code mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)} does not help here since we need // the type hint embedded for deserialization using the default typing feature. registerNullValueSerializer(mapper, classPropertyTypeName); if (StringUtils.hasText(classPropertyTypeName)) { mapper.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, classPropertyTypeName); } else { mapper.enableDefaultTyping(DefaultTyping.NON_FINAL, As.PROPERTY); } }
/** * Convenience method that is equivalent to calling *<pre> * enableDefaultTyping(dti, JsonTypeInfo.As.WRAPPER_ARRAY); *</pre> *<p> * NOTE: use of Default Typing can be a potential security risk if incoming * content comes from untrusted sources, and it is recommended that this * is either not done, or, if enabled, use {@link #setDefaultTyping} * passing a custom {@link TypeResolverBuilder} implementation that white-lists * legal types to use. */ public ObjectMapper enableDefaultTyping(DefaultTyping dti) { return enableDefaultTyping(dti, JsonTypeInfo.As.WRAPPER_ARRAY); }
public MapDBContext(DB db) { this.db = db; objectMapper = new ObjectMapper(); objectMapper.enableDefaultTyping(); }
RuntimeStatsPersister() { om = new ObjectMapper(); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); om.configure(SerializationFeature.INDENT_OUTPUT, true); om.configure(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS, true); }
public static List<Map<String, Object>> parse(String json) throws Exception { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS, JsonTypeInfo.As.WRAPPER_ARRAY); return mapper.readValue(json, ArrayList.class); } }
/** * Creates new {@link Jackson2HashMapper} with default {@link ObjectMapper}. * * @param flatten */ public Jackson2HashMapper(boolean flatten) { this(new ObjectMapper(), flatten); typingMapper.enableDefaultTyping(DefaultTyping.NON_FINAL, As.PROPERTY); typingMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false); typingMapper.setSerializationInclusion(Include.NON_NULL); typingMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); }
public Jackson2ExecutionContextStringSerializer() { this.objectMapper = new ObjectMapper(); this.objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false); this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); this.objectMapper.enableDefaultTyping(); this.objectMapper.registerModule(new JobParametersModule()); }
public JacksonJsonSerializer() { // mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); MAPPER.registerModule( new SimpleModule().addSerializer(new JacksonJsonSerializer.NullValueSerializer((String) null))); MAPPER.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); }
@Inject public ScopedCacheSerializationImpl( final Session session, final CassandraConfig cassandraConfig ) { this.session = session; this.cassandraConfig = cassandraConfig; MAPPER.enableDefaultTyping(); MAPPER.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE); MAPPER.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); }
private Set<SinkTool> readSinkToolsJson(String jsonPath) throws Exception { try (BufferedInputStream is = new BufferedInputStream(new FileInputStream(jsonPath))) { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); return mapper.readValue(is, HashSet.class); } } }
@Test public void readValueWhenExplicitDefaultTypingAfterSecuritySetupThenReadsAsSpecificType() throws Exception { mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); String content = "{\"@class\":\"org.springframework.security.jackson2.SecurityJackson2ModulesTests$NotWhitelisted\",\"property\":\"bar\"}"; assertThat(mapper.readValue(content, Object.class)).isInstanceOf(NotWhitelisted.class); }
@Test public void readValueWhenExplicitDefaultTypingBeforeSecuritySetupThenReadsAsSpecificType() throws Exception { mapper = new ObjectMapper(); mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); SecurityJackson2Modules.enableDefaultTyping(mapper); String content = "{\"@class\":\"org.springframework.security.jackson2.SecurityJackson2ModulesTests$NotWhitelisted\",\"property\":\"bar\"}"; assertThat(mapper.readValue(content, Object.class)).isInstanceOf(NotWhitelisted.class); }
@Test public void testWriteSinkToolsJson() throws Exception { Map<String, String> cubeDescOverrideProperties = Maps.newHashMap(); cubeDescOverrideProperties.put("kylin.cube.algorithm", "INMEM"); HiveSinkTool hiveSinkTool = new HiveSinkTool(); hiveSinkTool.setCubeDescOverrideProperties(cubeDescOverrideProperties); String outputPath = "src/test/resources/SCSinkTools.json"; try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(outputPath))) { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); mapper.writeValue(os, Sets.newHashSet(hiveSinkTool)); } Set<SinkTool> sinkToolSet = readSinkToolsJson(outputPath); for (SinkTool entry : sinkToolSet) { Map<String, String> props = entry.getCubeDescOverrideProperties(); for (String key : cubeDescOverrideProperties.keySet()) { assertEquals(props.get(key), cubeDescOverrideProperties.get(key)); } } }
@Bean @SuppressWarnings("unchecked") public RedisTemplate redisTemplate(@Qualifier("redisConnectionFactory") RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new StringRedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; }
@Bean @SuppressWarnings("unchecked") public RedisTemplate redisTemplate(@Qualifier("redisConnectionFactory") RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new StringRedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
public InMemoryJSONStorageExtension(String name, final ConcurrentMap<Object, Object> database) { this.name = name; this.database = database; mapper.registerModule(new ActorReferenceModule(DefaultDescriptorFactory.get())); mapper.enableDefaultTyping(); mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); }
@Test public void roundtrip() throws IOException { final ObjectMapper objectMapper = new ObjectMapper(); objectMapper.enableDefaultTyping(); objectMapper.registerModule(new GuavaModule()); ImmutableOuterObject outer = ImmutableOuterObject.builder() .emptyObject( ImmutableEmptyObject .builder() .build()) .build(); String serialized = objectMapper.writeValueAsString(outer); check(objectMapper.readValue(serialized, ImmutableOuterObject.class)).is(outer); } }
protected MessageJacksonDeserializer(Class<T> targetType) { super(targetType); this.mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); }
/** * 设置Serializer * * @param template RedisTemplate */ private void setSerializer(StringRedisTemplate template) { Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); }