当我将它放在方法之上时,@ JsonDeserialize不起作用

时间:2017-07-01 22:51:58

标签: java json serialization deserialization

我试图将传入的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确实有效。那么问题是什么呢?感谢。

0 个答案:

没有答案