博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
阅读量:6441 次
发布时间:2019-06-23

本文共 4040 字,大约阅读时间需要 13 分钟。

方法一 jackson注解

com.fasterxml.jackson.core
jackson-annotations
2.8.6
com.fasterxml.jackson.core
jackson-databind
2.8.6
package com.paascloud.helper;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;/** * Long 类型字段序列化时转为字符串,避免js丢失精度 */public class LongJsonSerializer extends JsonSerializer
{
/** * Serialize. * * @param value the value * @param jsonGenerator the json generator * @param serializerProvider the serializer provider * * @throws IOException the io exception */ @Override public void serialize(Long value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { String text = (value == null ? null : String.valueOf(value)); if (text != null) { jsonGenerator.writeString(text); } }}
package com.paascloud.helper;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.DeserializationContext;import com.fasterxml.jackson.databind.JsonDeserializer;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;/** * 将字符串转为Long */public class LongJsonDeserializer extends JsonDeserializer
{
private static final Logger logger = LoggerFactory.getLogger(LongJsonDeserializer.class); /** * Deserialize long. * * @param jsonParser the json parser * @param deserializationContext the deserialization context * * @return the long * */ @Override public Long deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { String value = null; try { value = jsonParser.getText(); } catch (IOException e) { e.printStackTrace(); } try { return value == null ? null : Long.parseLong(value); } catch (NumberFormatException e) { logger.error("解析长整形错误", e); return null; } }}
@Datapublic class BaseEntity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @JsonSerialize(using = LongJsonSerializer.class) @JsonDeserialize(using = LongJsonDeserializer.class) private Long id;}

发现在List中还有问题

方法二

org.apache.rocketmq
rocketmq-client
4.1.0-incubating
de.codecentric
spring-boot-admin-starter-client
org.springframework.boot
spring-boot-starter-freemarker
org.springframework.cloud
spring-cloud-starter-feign
@Bean    public ObjectMapper ObjectMapper(){        SimpleModule simpleModule = new SimpleModule();        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);        ObjectMapper objectMapper = new ObjectMapper()                .registerModule(new ParameterNamesModule())                .registerModule(new Jdk8Module())                .registerModule(new JavaTimeModule())                .registerModule(simpleModule);        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);//      SerializerProvider serializerProvider = objectMapper.getSerializerProvider();//      serializerProvider.setNullValueSerializer(new JsonSerializer() {
// @Override// public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
// jsonGenerator.writeString("");// }//// }); return objectMapper; }

小坑一个记录一下, 解决现有问题

转载地址:http://xvcwo.baihongyu.com/

你可能感兴趣的文章
css3 动画(三)animation 简介
查看>>
npm包的发布与删除
查看>>
[LeetCode] Encode and Decode Strings
查看>>
JAVA多线程与并发学习总结
查看>>
精读《React 八种条件渲染》
查看>>
一个正则表达式引发的血案,让线上CPU100%异常!
查看>>
小程序二维码规则设置
查看>>
Unity3D - 巡逻兵
查看>>
通过一个简单的注册功能来理解测试驱动开发
查看>>
php 必备linux环境搭建
查看>>
Elasticsearch 参考指南(目录)
查看>>
H5之title吸顶功能
查看>>
我在菊场这一年
查看>>
C++入门教程(20):变量、不变量和常量
查看>>
vue2.0学习笔记(七):深刻理解Vue中的组件(2)--进阶篇
查看>>
React-Router路由跳转时render触发两次的情况
查看>>
初学vue.js记录
查看>>
我放弃了 Google 的工作,因为他们拒绝给我买圣诞礼物
查看>>
小白教程-阿里云-centos零起步配置一个环境
查看>>
表单系列之input类型与属性简介
查看>>