Spring Controller 建议修剪 JSON 数据
Posted
技术标签:
【中文标题】Spring Controller 建议修剪 JSON 数据【英文标题】:Spring Controller Advice to Trim JSON Data 【发布时间】:2017-03-03 23:22:31 【问题描述】:我found an answer 与此问题类似,但在发布 JSON 数据时它不起作用。我有以下内容:
@ControllerAdvice
public class ControllerConfig
@InitBinder
public void initBinder ( WebDataBinder binder )
StringTrimmerEditor stringtrimmer = new StringTrimmerEditor(true);
binder.registerCustomEditor(String.class, stringtrimmer);
我知道在绑定期间通过调试到达了代码,但是当我传入如下数据时:
"companyId": " ABC "
ABC
在绑定过程中实际上并没有被修剪。我的猜测是,这只适用于请求参数而不是原始 JSON 主体,但不确定。如果是这样的话,我可以做类似的事情吗?
【问题讨论】:
我想你会创建 Jackson Deserializer 【参考方案1】:创建这个 JsonDeserializer
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();
并将其设置为您的属性
@JsonDeserialize(using=WhiteSpaceRemovalSerializer.class)
public void setAString(String aString)
// body
【讨论】:
【参考方案2】:试试这个, 创建一个类。 使用 @JsonComponent 注释类 扩展 JsonDeserializer 并且,在覆盖的方法中添加您的修剪逻辑,
这将自动修剪 json 请求中的空格,当它到达控制器时,不需要外部属性来激活它。
@JsonComponent
public class WhiteSpaceRemover extends JsonDeserializer<String>
@Override
public String deserialize(JsonParser arg0, DeserializationContext arg1)
throws IOException, JsonProcessingException
return arg0.getValueAsString().trim();
【讨论】:
以上是关于Spring Controller 建议修剪 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将javascript(js)映射传递给spring boot Controller?
如何从(.js)文件发送ajax请求到Spring MVC Controller?