我有这个REST响应:
{
//more fields...
prevValue: 10104401
}
而这个POJO:
public class Parameter {
//More fields...
private String prevValue;
//Getters and setters
}
我在
RestTemplate
中使用Spring MappingJackson2HttpMessageConverter
。有了以上响应,以科学计数法将prevValue
反序列化为String
像1.0104401E7
一样。我希望它在没有科学符号的情况下反序列化。有没有办法使用Jackson注释来做到这一点?
最佳答案
您可以使用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;
}
}
}