ObjectMapper, . :
public class FeatureModifyingBeanDeserializerModifier extends BeanDeserializerModifier {
private Collection<Class<?>> modifiedClasses;
public FeatureModifyingBeanDeserializerModifier(Collection<Class<?>> modifiedClasses) {
this.modifiedClasses = Collections.unmodifiableSet(new HashSet<Class<?>>(modifiedClasses));
}
@Override
public JsonDeserializer<?> modifyDeserializer(
DeserializationConfig config, BeanDescription beanDesc, final JsonDeserializer<?> deserializer) {
JsonDeserializer<?> result = deserializer;
Class<?> beanClass = beanDesc.getBeanClass();
if (modifiedClasses.contains(beanClass)) {
result = new FeatureModifyingStdDeserializer(deserializer, beanClass);
}
return result;
}
private static class FeatureModifyingStdDeserializer extends StdDeserializer<Object> {
private JsonDeserializer<?> deserializer;
private FeatureModifyingStdDeserializer(
JsonDeserializer<?> deserializer, Class<?> beanClass) {
super(beanClass);
this.deserializer = deserializer;
}
@Override
public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
p.enable(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER);
return deserializer.deserialize(p, ctxt);
}
}
}
You need to register it using ObjectMapper as a module:
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.setDeserializerModifier(new FeatureModifyingBeanDeserializerModifer(Arrays.asList(Journey.class)));
objectMapper.registerModule(module);
For serialization, you can add the @JsonSerialize annotation to the Journey class and serialize it in any way. If you need to write a string without saving, you can use writeRaw from JsonGenerator.
user2934313
source
share