1. 思路
通过改变jackson的Serializer为自定义方法,处理double等可能会变成科学计数法的数据类型,直接注入到Spring消息转换器。
2. 自定义处理方法
/**
* double输出不以科学计数法显示
*
* @author zhuxj
*
*/
public class CustomDoubleSerializer extends JsonSerializer<Double> {
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
BigDecimal d = new BigDecimal(value.toString());
gen.writeNumber(d.stripTrailingZeros().toPlainString());
}
@Override
public Class<Double> handledType() {
return Double.class;
}
}
3. xml配置,注入到jackson工厂和spring消息转换器
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
<value>text/json;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
<property name="objectMapper">
<bean
class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="serializers">
<array>
<bean class="com.sjty.cs.api.util.CustomDoubleSerializer" />
</array>
</property>
</bean>
</property>
</bean>