private ObjectNode simpleTypeSchema(JsonNode exampleValue) { try { Object valueAsJavaType = this.objectMapper.treeToValue(exampleValue, Object.class); SchemaAware valueSerializer = getValueSerializer(valueAsJavaType); return (ObjectNode) valueSerializer.getSchema(this.objectMapper.getSerializerProvider(), null); } catch (JsonProcessingException e) { throw new GenerationException("Unable to generate a schema for this json example: " + exampleValue, e); } }
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false); mapper.setSerializationInclusion(Include.NON_NULL); mapper.getSerializerProvider().setNullKeySerializer(new MyNullKeySerializer()); System.out.println(mapper.writeValueAsString(foos));
@Before public void setUp() throws Exception { writer = new StringWriter(); serializer = new PayloadSerializer(); jsonGenerator = new JsonFactory().createGenerator(writer); ObjectMapper mapper = new ObjectMapper(); jsonGenerator.setCodec(mapper); serializerProvider = mapper.getSerializerProvider(); }
public static synchronized void reset() { for (ObjectMapper mapper : U.list(MAPPER, PRETTY_MAPPER)) { SerializerProvider serializerProvider = mapper.getSerializerProvider(); if (serializerProvider instanceof DefaultSerializerProvider) { DefaultSerializerProvider provider = (DefaultSerializerProvider) serializerProvider; provider.flushCachedSerializers(); } else { Log.warn("Couldn't clear the cache of Jackson serializers!", "class", Cls.of(serializerProvider)); } DeserializationContext deserializationContext = mapper.getDeserializationContext(); Object cache = Cls.getFieldValue(deserializationContext, "_cache"); if (cache instanceof DeserializerCache) { DeserializerCache deserializerCache = (DeserializerCache) cache; deserializerCache.flushCachedDeserializers(); } else { Log.warn("Couldn't clear the cache of Jackson deserializers!", "class", Cls.of(cache)); } } }
/** * Returns the {@link JsonSerializer} for the given type, or {@literal null} if none available. * * @param type must not be {@literal null}. * @return */ public JsonSerializer<?> getTypeSerializer(Class<?> type) { Assert.notNull(type, "Type must not be null!"); try { SerializerProvider provider = mapper.getSerializerProvider(); if (!(provider instanceof DefaultSerializerProvider)) { return null; } provider = ((DefaultSerializerProvider) provider).createInstance(mapper.getSerializationConfig(), mapper.getSerializerFactory()); return provider.findValueSerializer(type); } catch (JsonMappingException o_O) { return null; } }
void cleanSerializerCache(ObjectMapper mapper) { if (mapper.getSerializerProvider() instanceof DefaultSerializerProvider) { int cachedSerProvs = ((DefaultSerializerProvider) mapper .getSerializerProvider()).cachedSerializersCount(); if (cachedSerProvs > 0) { // getLogger() // .debug("flushing cachedSerializersCount:" // + cachedSerProvs); ((DefaultSerializerProvider) mapper.getSerializerProvider()) .flushCachedSerializers(); } } }
public static void main(String[] args) throws JsonProcessingException { List<String> strings = new ArrayList<>(); strings.add("string 1"); strings.add("string 2"); strings.add(null); strings.add(null); ObjectMapper mapper=new ObjectMapper(); mapper.getSerializerProvider().setNullValueSerializer(new NullSerializer()); System.out.println(mapper.writeValueAsString(strings)); }
private static ObjectMapper createObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { } }); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); return objectMapper; } }
private static ObjectMapper getNullKeyHandlingMapper() { // standard provider chokes on null key values, but we'd rather incorporate them // as "null" ObjectMapper mapper = new ObjectMapper(); mapper.getSerializerProvider().setNullKeySerializer(new JsonSerializer<Object>() { @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { gen.writeFieldName("null"); } }); return mapper; } }
public class App { public static void main(String... args) throws JsonProcessingException, IOException { ObjectMapper objectMapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); /* initialize object */ A a = new A(1, 2, 3); /* initialize a new serializer object with wanted properties and add to module */ module.addSerializer(new ASerializer(new String[]{"_1", "_2"})); /* if you want to flush cached serializers */ DefaultSerializerProvider dsp = (DefaultSerializerProvider) objectMapper.getSerializerProvider(); dsp.flushCachedSerializers(); objectMapper.registerModule(module); System.out.println(objectMapper.writeValueAsString(a)); } }
public void cleanCache() { SerializerProvider serializerProvider = getObjectMapper().getSerializerProvider(); if (serializerProvider instanceof DefaultSerializerProvider) { ((DefaultSerializerProvider) serializerProvider).flushCachedSerializers(); } } }
class MyDtoNullKeySerializer extends JsonSerializer<Object> { @Override public void serialize(Object nullKey, JsonGenerator jsonGenerator, SerializerProvider unused) throws IOException, JsonProcessingException { jsonGenerator.writeFieldName(""); } } @Test public void givenAllowingMapObjectWithNullKey_whenWriting_thenCorrect() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); mapper.getSerializerProvider().setNullKeySerializer(new MyDtoNullKeySerializer()); MyDto dtoObject = new MyDto(); dtoObject.setStringValue("dtoObjectString"); Map<String, MyDto> dtoMap = new HashMap<String, MyDto>(); dtoMap.put(null, dtoObject); String dtoMapAsString = mapper.writeValueAsString(dtoMap); assertThat(dtoMapAsString, containsString("\"\"")); assertThat(dtoMapAsString, containsString("dtoObjectString")); }
@Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeString(""); } }); return objectMapper; } }
private ObjectNode simpleTypeSchema(JsonNode exampleValue) { try { Object valueAsJavaType = this.objectMapper.treeToValue(exampleValue, Object.class); SchemaAware valueSerializer = getValueSerializer(valueAsJavaType); return (ObjectNode) valueSerializer.getSchema(this.objectMapper.getSerializerProvider(), null); } catch (JsonProcessingException e) { throw new GenerationException("Unable to generate a schema for this json example: " + exampleValue, e); } }
@Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); objectMapper.disable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeString(""); } }); return objectMapper; } }
/** * Gets a {@link SerializerProvider} configured with the {@link ObjectMapper}'s {@link SerializationConfig} * ({@link ObjectMapper#getSerializationConfig()}) to be used for serialization. * <p> * Note that the {@link ObjectMapper}'s {@link SerializerProvider} ({@link ObjectMapper#getSerializerProvider()}) * cannot be used directly, because the {@link SerializerProvider}'s {@link SerializationConfig} ({@link SerializerProvider#getConfig()}) is null, * which causes NullPointerExceptions when it is used. */ private SerializerProvider getSerializerProvider(ObjectMapper mapper) { SerializerProvider provider = serializerProviders.get(mapper); if (provider == null) { SerializerProvider newProvider = ((DefaultSerializerProvider) mapper.getSerializerProvider()) .createInstance(mapper.getSerializationConfig(), mapper.getSerializerFactory()); SerializerProvider existingProvider = serializerProviders.putIfAbsent(mapper, newProvider); provider = (existingProvider == null) ? newProvider : existingProvider; } return provider; }
public static SerializerProvider getSerializerProvider( ObjectMapper objectMapper) { DefaultSerializerProvider serializerProvider = (DefaultSerializerProvider) objectMapper .getSerializerProvider(); return serializerProvider.createInstance( objectMapper.getSerializationConfig(), getSerializerFactory(objectMapper)); }
private ObjectNode simpleTypeSchema(JsonNode exampleValue) { try { Object valueAsJavaType = OBJECT_MAPPER.treeToValue(exampleValue, Object.class); SchemaAware valueSerializer = getValueSerializer(valueAsJavaType); return (ObjectNode) valueSerializer.getSchema(OBJECT_MAPPER.getSerializerProvider(), null); } catch (JsonMappingException e) { throw new GenerationException("Unable to generate a schema for this json example: " + exampleValue, e); } catch (JsonProcessingException e) { throw new GenerationException("Unable to generate a schema for this json example: " + exampleValue, e); } }
/** * Create a new JsonManager * @param theClass The class to create a json manager for (yes, also in the diamonds). */ public JsonManager (Class<T> theClass) { this.theClass = theClass; this.mapper = new ObjectMapper(); mapper.addMixInAnnotations(Rectangle2D.class, Rectangle2DMixIn.class); mapper.registerModule(new GeoJsonModule()); SimpleModule deser = new SimpleModule(); deser.addDeserializer(LocalDate.class, new JacksonSerializers.LocalDateStringDeserializer()); deser.addSerializer(LocalDate.class, new JacksonSerializers.LocalDateStringSerializer()); deser.addDeserializer(Rectangle2D.class, new Rectangle2DDeserializer()); mapper.registerModule(deser); mapper.getSerializerProvider().setNullKeySerializer(new JacksonSerializers.MyDtoNullKeySerializer()); filters = new SimpleFilterProvider(); filters.addFilter("bbox", SimpleBeanPropertyFilter.filterOutAllExcept("west", "east", "south", "north")); this.writer = mapper.writer(filters); }
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; }