JSON示例(请注意,该字符串具有尾随空格):
{ "aNumber": 0, "aString": "string " }
理想情况下,反序列化的实例将具有 aString 属性,其值为 “ string” (即,没有尾随空格)。这似乎是受支持的东西,但我找不到(例如在 DeserializationConfig.Feature中 )。
我们使用的是Spring MVC 3.x,因此基于Spring的解决方案也可以。
我尝试根据论坛帖子中的建议配置Spring的WebDataBinder,但是在使用Jackson消息转换器时,它似乎不起作用:
@InitBinder public void initBinder( WebDataBinder binder ) { binder.registerCustomEditor( String.class, new StringTrimmerEditor( " \t\r\n\f", true ) ); }
使用自定义解串器,您可以执行以下操作:
<your bean> @JsonDeserialize(using=WhiteSpaceRemovalSerializer.class) public void setAString(String aString) { // body } <somewhere> public class WhiteSpaceRemovalDeserializer extends JsonDeserializer<String> { @Override public String deserialize(JsonParser jp, DeserializationContext ctxt) { // This is where you can deserialize your value the way you want. // Don't know if the following expression is correct, this is just an idea. return jp.getCurrentToken().asText().trim(); } }
此解决方案确实暗示将始终以这种方式序列化该bean属性,并且您将必须注释要以这种方式反序列化的每个属性。