项目需要进行一个接口的推送,将得到的参数推送到远程接口进行数据处理。
之前使用了Gson转为json字符串,结果放到正式环境,发生了内存溢出,获取不到最后一个参数,发生了参数丢失问题,导致生产出现了错误,还好不是很大的问题,后来排查日志发现Gson转json时直接没有最后一个参数,感觉时Gson的问题,就用了阿里巴巴的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);
Gson gson = new Gson();
String requestParam = gson.toJson(paramMap);
this.logger.info("调用接口--请求参数:" + requestParam);
打完日志发现参数没有startbusinessdate
这个kv,传不过去。
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原理还没看,正打算浏览,估计站内有很多这样的问题,小伙伴们一起努力把!