Example JSON (note that the string has trailing spaces):
{ "aNumber": 0, "aString": "string " }
Ideally, the deserialised instance would have an aString property with a value of “string” (i.e. without trailing spaces). This seems like something that is probably supported but I can’t find it (e.g. in DeserializationConfig.Feature).
We’re using Spring MVC 3.x so a Spring-based solution would also be fine.
I tried configuring Spring’s WebDataBinder based on a suggestion in a forum post but it does not seem to work when using a Jackson message converter:
@InitBinder
public void initBinder( WebDataBinder binder )
{
binder.registerCustomEditor( String.class, new StringTrimmerEditor( " \t\r\n\f", true ) );
}
With a custom deserializer, you could do the following:
This solution does imply that this bean attribute will always be serialized this way, and you will have to annotate every attribute that you want to be deserialized this way.