报文学习2

本文介绍了在Java中解析报文时遇到的问题,强调了不应过度使用get方法进行嵌套,并解释了正确的方式是根据数据类型创建相应类型的变量来存储取出的信息。作者通过示例代码展示了如何从Map和List中正确取出String类型的数据,提醒开发者注意避免类型转换错误和层次结构的正确处理。
摘要由CSDN通过智能技术生成

报文学习2

22年8月11日

上一部分是将报文放进去,这一部分是将报文取出来

开始思维走了误区,一直嵌套着用get,自己其实已经意识到有问题了,get出来的东西是不能当做下一个get的参数。

正确方法应该是:同放进去一样,怎样放进去,就怎样取出来。

如果是Map类型那就在创建一个Map放取出来的信息,List也是一样。

遇到的问题就是本来是String类型,正常输出就可以的,但是还是刻意的模仿给的示例代码,导致报错java.lang.String cannot be cast to java.util.Map,出现此类错误在搜的时候,获得的问题答案是:说明你list里的元素就是String类型的,这样你就不能用Map map来接了,报错的地方要改成String map = (String)list.get(i);相应的后面的代码也要修改!

最开始不理解,快下班时,想明白什么类型就创建什么类型的参数,不是必须使用Map和List类型,切记!!

代码

System.out.println(UNI_BSS_BODY);

Map<String, Object> optMap = (Map<String, Object>) UNI_BSS_BODY.get("OPT_MOD_CHECK_REQ");
System.out.println("optMap:"+optMap);
Map<String, Object> msgMap = (Map<String, Object>) optMap.get("MSG");
System.out.println("msgMap:"+msgMap);
List<Map<String, Object>> tradeItems =(List<Map<String, Object>>) msgMap.get("tradeItem");
System.out.println("tradeItems:"+tradeItems);
List<Map<String, Object>> productInfos =(List<Map<String, Object>>) msgMap.get("productInfo");
System.out.println("productInfos:"+productInfos);
String speedLevels = (String) MSG.get("speedLevel");
System.out.println("speedLevels:"+speedLevels);
String serialNumbers = (String) MSG.get("serialNumber");
System.out.println("serialNumbers:"+serialNumbers);
String APPKEYs = (String) UNI_BSS_BODY.get("APPKEY");
System.out.println("APPKEYs:"+APPKEYs);

注意:

  1. 一定是一层层取出需要的信息,不能跨越取出。
  2. 在创建存放取出信息的变量的时候,注意命名,不要和上面的存放报文的名称一致,同时注意在get时,参数必须是上面已定义的名称。
  3. 对于数组而言,名称对应的对应名称的List数组,注意!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值