Java @JsonDeserialize不';当我把它置于方法之上时,它就不起作用了
我试图将传入的json自定义反序列化到字段中,但是@JsonDeserialize不起作用,因为我将它放在要反序列化的字段的setter之上Java @JsonDeserialize不';当我把它置于方法之上时,它就不起作用了,java,json,serialization,deserialization,Java,Json,Serialization,Deserialization,我试图将传入的json自定义反序列化到字段中,但是@JsonDeserialize不起作用,因为我将它放在要反序列化的字段的setter之上 public class MyEntity { @JsonProperty("identifier") private String identifier; @JsonDeserialize(using = IdentifierDeserializer.class) public void setIdentifier(String identifier
public class MyEntity {
@JsonProperty("identifier")
private String identifier;
@JsonDeserialize(using = IdentifierDeserializer.class)
public void setIdentifier(String identifier)
{
this.identifier = identifier;
}
}
公共类标识符序列化程序
扩展JsonDeserializer
{
@凌驾
公共字符串反序列化(JsonParser jp,反序列化上下文ctxt)
抛出IOException
{
ObjectCodec oc=jp.getCodec();
JsonNode=oc.readTree(jp);
final JsonNode entity=node.get(“entity”);
return entity.get(“id”).asText();
}
}
我是通过_restemplatehttpMessageConverter流来实现的,只是standar 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();
HttpEntity-HttpEntity=新的HttpEntity(entity,httpHeaders());
MappingJackson2HttpMessageConverter jsonConverter=新的MappingJackson2HttpMessageConverter();
jsonConverter.setSupportedMediaTypes(list.newArrayList(MediaType.APPLICATION_JSON_UTF8));
_restemplate.getMessageConverters().add(jsonConverter);
return _restemplate.exchange(url、方法、httpEntity、MyEntity.class).getBody();
但是当我将@JsonDeserialize放在类之上时,它确实起作用。伙计们,有什么问题吗?谢谢。您正在尝试反序列化字符串吗?或者您想反序列化包含
标识符字段的类?如果可能的话,详细说明你希望它如何工作,你如何称呼它,以及你所说的“不工作”是什么意思。它是否引发运行时异常?显示一个如何运行的示例。我添加了说明。这是由JacksonHttpMessageConverter通过_RESTTemplateAPI调用流调用的,在调试过程中,我看不到我的自定义反序列化程序被调用。这对我来说很有用。您必须发布json示例以及如何使用ObjectMapper
。我添加了我使用的示例。
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();