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

自己做网站最新视频教程说说seo论坛

自己做网站最新视频教程,说说seo论坛,东昌府做网站,做网站买二手域名1、场景 ​ 在日常的开发中,我们数据接口返回数据使用了FastJson序列化数据,当返回一个数据list时候出现" r e f " " ref" " ref"".data" 等类似乱码一样的数据,当时我比较匪夷所思,我写…

1、场景

​ 在日常的开发中,我们数据接口返回数据使用了FastJson序列化数据,当返回一个数据list时候出现" r e f " " ref" " ref"".data" 等类似乱码一样的数据,当时我比较匪夷所思,我写的代码这么完美,为什么会返回非正常数据数据呢?经过我多方查证,原来是FastJson框架自身的问题。

2、问题原因

​ 使用FastJson的JSONArray类型作为返回数据,当像JSONArray对象中添加JSONObject对象,而JSONObject对象中包含相同的节点数据时,FastJson会防止返回数据栈溢出的问题,自动将JSONArray中相同的节点数据使用引用方式代替,即:{" r e f " : ref": ref":…[0]}

3、解决方案

强大的 FastJson 为我们提供了相关的配置参数来禁用循环引用

方法一:使用配置文件

*** FastJson配置** @author charles.yao* @date 2023/8/8**/
@Configuration
public class FastJsonConfiguration {@Beanpublic HttpMessageConverters getFastJSONHttpMessageConvert() {// 定义一个转换消息的对象FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();// 添加fastjson的配置信息 比如 :是否要格式化返回的json数据FastJsonConfig fastJsonConfig = new FastJsonConfig();// 修改配置返回内容的过滤fastJsonConfig.setSerializerFeatures(// 格式化输出SerializerFeature.PrettyFormat,// 消除循环引用SerializerFeature.DisableCircularReferenceDetect,// 返回结果保留null值SerializerFeature.WriteMapNullValue,// 将返回值为null的字符串转变成"",在这里可以自己设置SerializerFeature.WriteNullStringAsEmpty,// List字段如果为null,输出为[],而非nullSerializerFeature.WriteNullListAsEmpty);// 解决 SerializerFeature.WriteNullStringAsEmpty 不生效问题ValueFilter valueFilter = (object, name, value) -> {if (null == value){value = "";}return value;};// 设置全局日期格式fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");// 注入过滤器fastJsonConfig.setSerializeFilters(valueFilter);// Long、BigDecimal 序列化时转 StringSerializeConfig serializeConfig = SerializeConfig.globalInstance;serializeConfig.put(Long.class, ToStringSerializer.instance);serializeConfig.put(Long.TYPE, ToStringSerializer.instance);serializeConfig.put(BigDecimal.class, ToStringSerializer.instance);// 在转换器中添加配置信息fastJsonConfig.setSerializeConfig(serializeConfig);fastConverter.setDefaultCharset(StandardCharsets.UTF_8);fastConverter.setFastJsonConfig(fastJsonConfig);// 解决中文乱码问题,相当于在Controller上的@RequestMapping中加了个属性produces = "application/json"List<MediaType> mediaTypeList = new ArrayList<>();mediaTypeList.add(MediaType.APPLICATION_JSON);fastConverter.setSupportedMediaTypes(mediaTypeList);return new HttpMessageConverters(fastConverter);}
}

所有可选配置属性:

  • SerializerFeature.PrettyFormat:格式化输出
  • SerializerFeature.WriteMapNullValue:是否输出值为null的字段,默认为false
  • SerializerFeature.DisableCircularReferenceDetect:消除循环引用
  • SerializerFeature.WriteNullStringAsEmpty:将为null的字段值显示为""
  • WriteNullListAsEmpty:List字段如果为null,输出为[],而非null
  • WriteNullNumberAsZero:数值字段如果为null,输出为0,而非null
  • WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null
  • SkipTransientField:如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true
  • SortField:按字段名称排序后输出。默认为false
  • WriteDateUseDateFormat:全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
  • BeanToArray:将对象转为array输出
  • QuoteFieldNames:输出key时是否使用双引号,默认为true
  • UseSingleQuotes:输出key时使用单引号而不是双引号,默认为false(经测试,这里的key是指所有的输出结果,而非key/value的key,而是key,和value都使用单引号或双引号输出)

方法二(直接在返回数据禁止循环引用)

JSONArray jsonArrayUserNum = JSONArray.parseArray(JSON.toJSONString(resultJsonArr, SerializerFeature.DisableCircularReferenceDetect));
http://www.mmbaike.com/news/73052.html

相关文章:

  • 怎么做北京pk10的网站无人区在线观看高清1080
  • wordpress插件文件不存在图片优化是什么意思
  • 两学一做网站源码长沙seo优化排名
  • 手机作网站服务器百度账号管理中心
  • 做网站app 需要多少钱怎么下载有风险的软件
  • 邢台建手机网站流程网络推广网络营销和网站推广的区别
  • 做商城网站报价鸣蝉智能建站
  • 默认的首页文件名一般是企业网站的搜索引擎推广与优化
  • 哈尔滨百度优化免费的seo教程
  • 华宇网站建设百度商城app下载
  • 美丽寮步网站建设哪家好网络违法犯罪举报网站
  • 网页编辑公众号夫唯seo教程
  • wordpress在哪里设置编辑器百度搜索结果优化
  • 易语言怎么做ifa网站填表地方网站建设
  • 漯河 网站建设成都纯手工seo
  • 做网站网镇江网络
  • python可以做动态网站吗网络营销课程实训总结
  • 天动力网站开发网络营销成功案例
  • 做贸易网站360seo排名点击软件
  • 仿牌网站除了91还有什么关键词
  • 网站关键词优化怎么做的百度网页版怎么切换
  • 免费前端模板网站个人建网站步骤
  • 邢台哪个公司做网站网站内部seo优化包括
  • wordpress 弹出视频seo优化工具大全
  • 自己做网站想更换网址品牌营销策划方案
  • 镇江网站营销推广百度正版下载并安装
  • 高校学校网站建设做网页多少钱一个页面
  • 网站关键字字数营销网页设计公司
  • 网站建设费应计入什么科目google入口
  • 做算命网站挣钱么如何屏蔽百度广告推广