我有这个REST响应:

{
    //more fields...
    prevValue: 10104401
}


而这个POJO:

public class Parameter {

    //More fields...

    private String prevValue;

    //Getters and setters

}


我在RestTemplate中使用Spring MappingJackson2HttpMessageConverter。有了以上响应,以科学计数法将prevValue反序列化为String1.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;
        }
    }
}

10-07 18:58
查看更多