JSONObject.fromObject方法出现处理日期属性异常

本文针对在JavaWeb项目中使用JSONObject.fromObject(map)方法时遇到的异常情况进行了详细分析,并提供了有效的解决方案,包括如何检查依赖包及处理特定日期类型转换的问题。

1.现象

代码:JSONObject.fromObject(map);
在Javaweb项目中即使debug都不会产生任何异常信息,且不会往下面的语句执行。只有在单元测试下才会产生异常信息,无论是少包和对象本省属性问题都会进行提示。

2.解决

1.少包参考下面依赖包:
2.属性问题
无论是util.date还是sql.date都无法正常进行json转换,于是我只能使用timestamp类型则可以通过

@Subscriber("getPolicyByAgentLeave") public void getPolicyByAgentLeave() { LOGGER.info("销售人员离职触发通知“变更保单服务人员”短信开始"); if (null == this.tconMasterChaApprService) { this.tconMasterChaApprService = (TconMasterChaApprService) AppContext.getBean("tconMasterChaApprService"); } // 销售人员离职触发通知“变更保单服务人员”短信 List<TconMasterChaApprDomain> list = tconMasterChaApprService.getPolicyByAgentLeave(); if (CollectionUtils.isNotEmpty(list)) { tconMasterChaApprService.dealPolicyByAgentLeave(list); } LOGGER.info("销售人员离职触发通知“变更保单服务人员”短信-保单个数:{}", list.size()); } select * from (select mca.* from t_grp_agt_base gab, t_con_master_cha_appr mca where gab.agent_status = 2 and gab.leave_date > sysdate - 7 and gab.grp_agt_code = mca.agent_service_code and mca.appr_type = 'Y' and ((mca.send_flag is null) or (mca.send_flag = '1' and mca.send_count <3))) where rownum < (select to_number(a.config_value) from t_system_config a where a.config_type = 'AGENT_LEAVE_CAUSE_MSG') <select id="getPolicyByAgentLeave" resultMap="TconMasterChaApprResultMap"> <![CDATA[ select * from (select mca.* from t_grp_agt_base gab, t_con_master_cha_appr mca where gab.agent_status = 2 and gab.leave_date > sysdate - 7 and gab.grp_agt_code = mca.agent_service_code and mca.appr_type = 'Y' and ((mca.send_flag is null) or (mca.send_flag = '1' and mca.send_count <3))) where rownum < (select to_number(a.config_value) from t_system_config a where a.config_type = 'AGENT_LEAVE_CAUSE_MSG') ]]> </select> public void dealPolicyByAgentLeave(List<TconMasterChaApprDomain> list){ String url = cfgPropertiesBean.getGlsAgentLeaveUrl(); for (TconMasterChaApprDomain domain : list) { GlsAgentLeaveDomain callDomain = new GlsAgentLeaveDomain(); try { GlsAgentRequestBody body =new GlsAgentRequestBody(); GlsAgentRequestHead head =new GlsAgentRequestHead(); head.setCallTime(DateUtil.getFormatDate(DateUtil.getCurrentDate() , "yyyy-MM-dd HH:mm:ss")); head.setContentType("JSON"); head.setServiceAction("PolicyAgentChangeSendSmsService"); head.setServiceSystem("GLS"); head.setSourceSystem("GLS-CHANNEL"); callDomain.setRequestHead(head); body.setPolicyCode(domain.getPolicyCode()); body.setOldAgentCode(domain.getAgentServiceCode()); body.setNewAgentCode(domain.getAgentServiceCodeAppr()); callDomain.setRequestBody(body); String requestJson = JSONObject.fromObject(callDomain).toString(); HessianProxyFactory factory = new HessianProxyFactory(); GlsHessianServiceApi service = (GlsHessianServiceApi)factory.create(GlsHessianServiceApi.class, url); String result = service.process(requestJson); // 调用NBPM接口,查询NBPM签报状态 LOGGER.info("保单号:{}",domain.getPolicyCode()); LOGGER.info("处理结果:{}",result); if (StringUtils.isNotEmpty(result)) { JSONObject obj = JSONObject.fromObject(result); GlsAgentLeaveResponseDomain resultObj = (GlsAgentLeaveResponseDomain) JsonUtil.getDTO(obj.get("responseBody").toString(), GlsAgentLeaveResponseDomain.class); domain.setSendFlag(resultObj.getReturnCode()); tconMasterChaApprDao.updateStatus(domain); } } catch (Exception e) { LOGGER.error("离职人员触发短信信息异常:{}", callDomain); LOGGER.error("错误信息:", e); } } }上述代码想用类似于下面的方法测试应该怎么写 public static void queryAgentActivityInfo() { // String url = "http://10.108.74.63:8080/grp/hessian/grpAgtBaseHessionService"; String url = "http://gls-channel-uat2.foresealife.com/grp/hessian/grpAgtBaseHessionService"; String grpAgtBaseJson = ""; try { Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("agentCode", "332000051"); map2.put("ym", "202112"); // map2.put("agentCode", "3000001251"); grpAgtBaseJson = JsonUtil.getJSONString(map2); System.out.println(grpAgtBaseJson); HessianProxyFactory factory = new HessianProxyFactory(); GrpAgtBaseHessionService api = (GrpAgtBaseHessionService) factory.create(GrpAgtBaseHessionService.class, url); String resultStr = api.queryAgentActivityInfo(grpAgtBaseJson); System.out.println(resultStr); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { queryAgentActivityInfo(); }
10-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值