我有这个REST响应:
{
//more fields...
prevValue: 10104401
}
这个POJO:
public class Parameter {
//More fields...
private String prevValue;
//Getters and setters
}
我在RestTemplate
使用Spring MappingJackson2HttpMessageConverter
。通过上述回复,prevValue
被反序列化为String
,如1.0104401E7
,用科学记数法表示。
我希望在没有科学记数法的情况下对其进行反序列化。有没有办法使用杰克逊注释来做到这一点?
答案 0 :(得分:2)
您可以使用Jackson自定义反序列化器API来获得所需的结果。 请参阅以下示例:
public class Test {
public static void main(String[] args) throws Exception {
ObjectMapper om = new ObjectMapper();
Parameter p = om.readValue("{\"prevValue\": 101044012342343543}", Parameter.class);
System.out.println(p.prevValue);
}
public static class Number2StringDesrializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Number n = p.getNumberValue();
return n.toString();
}
}
public static class Parameter {
@JsonDeserialize(using = Number2StringDesrializer.class)
private String prevValue;
public void setPrevValue(String prevValue) {
this.prevValue = prevValue;
}
public String getPrevValue() {
return prevValue;
}
}
}