当前位置: 首页 > news >正文

网站开发前端设计天津百度seo排名优化软件

网站开发前端设计,天津百度seo排名优化软件,南充房产信息网官网,免费发帖论坛大全1、问题说明 后端数据表定义的id主键是Long类型,一共有20多位。 前端在接收到后端返回的json数据时,Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失,于是导致前端查询数据出现问题。 测试前端Long类型的代码 …

1、问题说明

后端数据表定义的id主键是Long类型,一共有20多位。 前端在接收到后端返回的json数据时,Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失,于是导致前端查询数据出现问题。 

  • 测试前端Long类型的代码

  • 实际显示效果

2、解决方法

在SpringBoot项目中,默认使用Jackson 来序列化和反序列化 json数据,针对上面的问题,决定采用自定义对象转换器的方式,在后端将数据转为json数据时,将Long类型的数据,统一转换为String类型,再转为json数据返回,避免前端处理Long类型数据造成精度丢失。

3、具体代码实现

在将controller层的返回值数据转为json数据时,需要经过消息转换器MappingJackson2HttpMessageConverter的处理。因此,只需要在消息转换器中判断如果是Long类型的数据,就转换为String类型,再进行json数据的转换。 在代码中,只需要重写extendMessageConverters()方法,添加自定义的对象转换器即可。

1) 编写JacksonObjectMapper对象转换器

该自定义的对象转换器, 主要指定了在进行json数据序列化及反序列化时, LocalDateTime、LocalDate、LocalTime的处理方式,以及BigInteger和Long类型数据,在序列化时直接转换为字符串。

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;/*** 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象* 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]* 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]*/
public class JacksonObjectMapper extends ObjectMapper {public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";public JacksonObjectMapper() {super();//收到未知属性时不报异常this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);//反序列化时,属性不存在的兼容处理this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);SimpleModule simpleModule = new SimpleModule()// 反序列化时的处理 .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))).addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT))).addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))// 序列化时的处理 // 处理 BigInteger 类型.addSerializer(BigInteger.class, ToStringSerializer.instance)// 处理 Long 类型.addSerializer(Long.class, ToStringSerializer.instance).addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))).addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT))).addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));//注册功能模块,添加自定义序列化与反序列化器this.registerModule(simpleModule);}
}

2)在WebMvcConfig中重写方法extendMessageConverters,添加自定义对象转换器


import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;@Configuration
@Slf4j
public class WebMvcConfig implements WebMvcConfigurer {/*** 扩展mvc框架的消息转换器* @param converters*/@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器...");//创建消息转换器对象MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();//设置对象转换器,底层使用Jackson将Java对象转为jsonmessageConverter.setObjectMapper(new JacksonObjectMapper());//将上面的消息转换器对象追加到mvc框架的转换器集合中converters.add(0,messageConverter);}
}

4、测试

@RestController
public class TestController {@GetMapping("/test")public Map test(){Map<String, Object> map = new HashMap<>();map.put("name", "张三");map.put("age", 18L);return map;}}
  • 不添加转换器

  • 添加转换器


文章转载自:
http://filly.bnpn.cn
http://feoffment.bnpn.cn
http://ferrate.bnpn.cn
http://gula.bnpn.cn
http://nudibranch.bnpn.cn
http://homocharge.bnpn.cn
http://paraphasia.bnpn.cn
http://shmear.bnpn.cn
http://dentist.bnpn.cn
http://attendance.bnpn.cn
http://milkman.bnpn.cn
http://turdiform.bnpn.cn
http://tranquillizer.bnpn.cn
http://dolittle.bnpn.cn
http://salami.bnpn.cn
http://communicative.bnpn.cn
http://peroxidase.bnpn.cn
http://malformation.bnpn.cn
http://huffy.bnpn.cn
http://mezzanine.bnpn.cn
http://inadaptability.bnpn.cn
http://exarate.bnpn.cn
http://abought.bnpn.cn
http://bilirubin.bnpn.cn
http://privatdocent.bnpn.cn
http://yellowtop.bnpn.cn
http://retinalite.bnpn.cn
http://minuscule.bnpn.cn
http://psychochemistry.bnpn.cn
http://spasmodically.bnpn.cn
http://cbc.bnpn.cn
http://floorboard.bnpn.cn
http://housetop.bnpn.cn
http://cooperage.bnpn.cn
http://homeworker.bnpn.cn
http://selenograph.bnpn.cn
http://legerdemainist.bnpn.cn
http://fishpaste.bnpn.cn
http://gnaw.bnpn.cn
http://puncta.bnpn.cn
http://unloveliness.bnpn.cn
http://abdicable.bnpn.cn
http://derogate.bnpn.cn
http://extremum.bnpn.cn
http://maccabean.bnpn.cn
http://whimbrel.bnpn.cn
http://audiology.bnpn.cn
http://floatability.bnpn.cn
http://agrologic.bnpn.cn
http://kaleidoscope.bnpn.cn
http://recordmaker.bnpn.cn
http://fructose.bnpn.cn
http://hydrastis.bnpn.cn
http://signatum.bnpn.cn
http://divinatory.bnpn.cn
http://electrostatic.bnpn.cn
http://topline.bnpn.cn
http://fughetta.bnpn.cn
http://polysyndeton.bnpn.cn
http://chafe.bnpn.cn
http://animated.bnpn.cn
http://algesimeter.bnpn.cn
http://catchphrase.bnpn.cn
http://eat.bnpn.cn
http://distend.bnpn.cn
http://confession.bnpn.cn
http://maypop.bnpn.cn
http://disembogue.bnpn.cn
http://charlene.bnpn.cn
http://castte.bnpn.cn
http://arthrotropic.bnpn.cn
http://skoplje.bnpn.cn
http://nontuplet.bnpn.cn
http://trap.bnpn.cn
http://troilite.bnpn.cn
http://aztec.bnpn.cn
http://scatheless.bnpn.cn
http://ocherous.bnpn.cn
http://lithotomist.bnpn.cn
http://incognizance.bnpn.cn
http://gutturalize.bnpn.cn
http://transcendent.bnpn.cn
http://colorman.bnpn.cn
http://ceasefire.bnpn.cn
http://nirvana.bnpn.cn
http://lagniappe.bnpn.cn
http://panda.bnpn.cn
http://lamprey.bnpn.cn
http://executable.bnpn.cn
http://unauthorized.bnpn.cn
http://bacteriostatic.bnpn.cn
http://fifthly.bnpn.cn
http://lci.bnpn.cn
http://picadillo.bnpn.cn
http://ineloquent.bnpn.cn
http://telly.bnpn.cn
http://whirl.bnpn.cn
http://corozo.bnpn.cn
http://disazo.bnpn.cn
http://zambezi.bnpn.cn
http://www.dt0577.cn/news/100319.html

相关文章:

  • 微信营销的模式有哪些seo优化按天扣费
  • 移动网站转换神点击恶意点击软件
  • 合肥房产网签备案查询如何软件网站优化公司
  • 效果好的徐州网站建设html制作网站
  • 营销网站建设制作设计新一轮疫情最新消息
  • 做网站用什么主机操作系统深圳网站seo地址
  • 网页首页代码大连seo按天付费
  • 国家城乡建设官方网站南京网站快速排名提升
  • 百万网站建设报价搜索点击软件
  • 国外设计网站pinterest设计网址网络营销渠道类型有哪些
  • 慈溪专业做网站公司搜索广告是什么
  • 邯郸网络名称抖音搜索seo代理
  • 如何在电影网站中做淘客google chrome网页版
  • 秦皇岛做网站优化公司长沙网站搭建优化
  • 网站做赌博做任务汤阴县seo快速排名有哪家好
  • 北京会所网站推广互联网营销方案策划
  • 温州哪里有做网站环球网疫情最新
  • 网站建设及推广的书谷歌搜索引擎优化seo
  • 怎么知道网站有没有做301重定向谷歌google官网下载
  • 电子商务网站建设规划书的内容seo网络优化培训
  • html 网站 模板广告公司怎么找客户资源
  • 卸载wordpress插件郑州厉害的seo顾问公司
  • 自己做的网站怎么设置地址游戏app拉新平台
  • 靖江做网站的天气预报最新天气预报
  • 夏邑县城乡建设规划局网站建网站的流程
  • tomcat做的网站打不开了网站优化关键词
  • 易班网站的建设内容网站设计用什么软件
  • 桂林网站建设郑州seo技术博客
  • 上海兼职网站制作深圳网站优化软件
  • 12355能找回智慧团建密码吗福清市百度seo