记录一下Gson跟FastJson遇到的一个坑

项目场景:

项目需要进行一个接口的推送,将得到的参数推送到远程接口进行数据处理。


问题描述

之前使用了Gson转为json字符串,结果放到正式环境,发生了内存溢出,获取不到最后一个参数,发生了参数丢失问题,导致生产出现了错误,还好不是很大的问题,后来排查日志发现Gson转json时直接没有最后一个参数,感觉时Gson的问题,就用了阿里巴巴的JsonObject工具类转字符串,问题得到解决

使用Gson时的代码

	                paramMap.put("sn", selssPos.getSerialno());
	                paramMap.put("mercId", selectBankCardInfo.getMercId());
	                paramMap.put("creationdate", selectBankCardInfo.getCreationdate());
	                paramMap.put("creationName", selectBankCardInfo.getCrpNm());
	                paramMap.put("mobilePhone", selectBankCardInfo.getMobilephone());
	                paramMap.put("startbusinessdate", s);
	                Gson gson = new Gson();
					String requestParam = gson.toJson(paramMap);
					this.logger.info("调用接口--请求参数:" + requestParam);

打完日志发现参数没有startbusinessdate这个kv,传不过去。


使用JsonObject

paramMap.put("sn", selssPos.getSerialno());
	                paramMap.put("mercId", selectBankCardInfo.getMercId());
	                paramMap.put("creationdate", selectBankCardInfo.getCreationdate());
	                paramMap.put("creationName", selectBankCardInfo.getCrpNm());
	                paramMap.put("mobilePhone", selectBankCardInfo.getMobilephone());
	                paramMap.put("startbusinessdate", s);
					String requestParam = com.alibaba.fastjson.JSONObject.toJSONString(paramMap);
	                String requestData = (new HttpEncode()).createEncode2(requestParam);
	                this.logger.info("调用接口--请求参数:" + requestParam);

打印日志发现能成功推送过去了,内存也不报溢出了,老泪纵横,目前Gson原理还没看,正打算浏览,估计站内有很多这样的问题,小伙伴们一起努力把!


你可能感兴趣的:(java,后端,java,学习)