可以将Jackson配置为修剪所有字符串属性中的前导/尾随空格吗?
JSON示例(请注意,该字符串具有尾随空格):
{ "aNumber": 0, "aString": "string " }
理想情况下,反序列化的实例将具有 属性,其值为
(即,没有尾随空格)。这似乎是受支持的东西,但我找不到(例如在 DeserializationConfig.Feature中 )。
我们使用的是Spring MVC 3.x,因此基于Spring的解决方案也可以。
我尝试根据论坛帖子中的建议配置Spring的WebDataBinder,但是在使用Jackson消息转换器时,它似乎不起作用:
@InitBinderpublic 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