可以将Jackson配置为修剪所有字符串属性中的前导/尾随空格吗?

JSON示例(请注意,该字符串具有尾随空格):

{ "aNumber": 0, "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属性,并且您将必须注释要以这种方式反序列化的每个属性。

以上是 可以将Jackson配置为修剪所有字符串属性中的前导/尾随空格吗? 的全部内容, 来源链接: utcz.com/qa/425671.html

回到顶部