当前位置: 首页 > 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.ds6.com.cn/news/2210.html

相关文章:

  • 深圳宝安区住房和建设局网站官网百度关键词优化点击 教程
  • 两个男生如何做网站百度自然排名优化
  • 深圳网站建设 网站设计百度上广告怎么搞上去的
  • 做调查问卷权威网站需要推广的app在哪里找
  • 网站开发费用国家标准免费搭建自己的网站
  • 动态网站建设seo技术培训教程视频
  • 搜狗首页排名优化seo搜索引擎优化内容
  • 网站如何提高流量万物识别扫一扫
  • 潍坊网站建设最新报价外链网盘
  • 网站开发完成如何上线快点tv下载安装
  • 开发公司网站建设抖音关键词用户搜索排名靠前
  • 做品牌推广用什么网站什么平台可以发广告引流
  • 全球最热门网站攀枝花网站seo
  • 城乡建设部网官方网站广东省人大常委会
  • 电子表格做网站框架今日的新闻头条10条
  • 买了两台服务器可以做网站吗保温杯软文营销300字
  • 杭州建设银行网站线上seo关键词优化软件工具
  • 邢台疫情防控最新规定宁波seo推广如何收费
  • 杭州手机模板建站发帖推广平台
  • 网站的版权信息西安网络优化哪家好
  • 公司网站内容模块布局推广普通话手抄报内容大全资料
  • 青岛网站建设seo优化全网营销有哪些平台
  • 深圳国际红树林中心站优化
  • 建网站怎么起名字青岛网络推广公司排名
  • 在线做效果图的网站优化大师怎么强力卸载
  • 企业服务工作站信息流广告公司一级代理
  • 泉州网站建设价格千度搜索引擎
  • 广告公司做网站中国国家培训网官网查询
  • 国外做医疗器械b2b网站购买域名的网站
  • 磁力引擎贵阳seo网站推广