Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JsonDeserialize不';当我把它置于方法之上时,它就不起作用了_Java_Json_Serialization_Deserialization - Fatal编程技术网

Java @JsonDeserialize不';当我把它置于方法之上时,它就不起作用了

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

我试图将传入的json自定义反序列化到字段中,但是@JsonDeserialize不起作用,因为我将它放在要反序列化的字段的setter之上

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();