是否可以配置spring来按需要反序列化传入的json。
例如
{ "user":"abc" }
我希望在我的控制器方法对其进行处理之前先点击自定义解串器。
我该怎么做?我可以访问用户对象,但是不能将该对象注释为它在我的项目外部。
但是我仍然想填充该对象并将其通过REST方法传递给它。
答案 0 :(得分:1)
您必须创建objectMapper
bean实现,其中包含一个mixIn:
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(MyObject.class, MyObjectMixin.class);
return mapper;
}
然后混合将是这样的:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE,
isGetterVisibility = JsonAutoDetect.Visibility.NONE)
@JsonDeserialize(using = MyObjectDeserializer.class)
public class MyObjectMixin {
}
最后,解串器必须使用以下方法扩展JsonDeserializer
:
@Override
public MyObject deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {