我试图将传入的json自定义反序列化到字段中,但@JsonDeserialize不起作用,我把它放在我要反序列化的字段的setter上面。
public class MyEntity {
@JsonProperty("identifier")
private String identifier;
@JsonDeserialize(using = IdentifierDeserializer.class)
public void setIdentifier(String identifier)
{
this.identifier = identifier;
}
}
...
public class IdentifierDeserializer
extends JsonDeserializer<String>
{
@Override
public String deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException
{
ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
final JsonNode entity = node.get("entity");
return entity.get("id").asText();
}
}
我是通过_restTemplate httpMessageConverter流做的,只是标准的API调用,不,它不会抛出任何异常,它只是没有被调用,因为我这用调试和我的断点保持不变。
HttpEntity<T> httpEntity = new HttpEntity<>(entity, httpHeaders());
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
jsonConverter.setSupportedMediaTypes(Lists.newArrayList(MediaType.APPLICATION_JSON_UTF8));
_restTemplate.getMessageConverters().add(jsonConverter);
return _restTemplate.exchange(url, method, httpEntity, MyEntity.class).getBody();
但是当我把它放在课堂上方时,@ JsonDeserialize确实有效。那么问题是什么呢?感谢。