当前位置: 首页 > news >正文

著名的个人网站网站流量 收益

著名的个人网站,网站流量 收益,哪些网站的数据库做的好,扁平化资讯网站模板简介 本篇文章主要解决了上篇文章中遗留的对象嵌套问题#xff0c;要想全面解析无限极的对象嵌套需要使用递归去解决 上文链接#xff1a; 使用CXF调用WSDL#xff08;一#xff09; 上文回顾 上文使用了单方法“ call() ”解决了List和基本类型#xff08;含String要想全面解析无限极的对象嵌套需要使用递归去解决 上文链接 使用CXF调用WSDL一 上文回顾 上文使用了单方法“ call() ”解决了List和基本类型含String以及对象的解析但遗留了对象嵌套问题本文将把 “ call() ” 方法中关于对象解析的部分拆分出独立的方法 “ analysisParam() ”然后使用递归解决对象的嵌套问题 正文 /*** 调用远程过程*/public Object call(DTGMM1020GERP paramEntity) {Object result null;log.info([PO创建时]入参{},JSON.toJSONString(paramEntity,true));Map map JSONObject.parseObject(JSON.toJSONString(paramEntity, SerializerFeature.WriteDateUseDateFormat), Map.class);MapString,Object wsdl getWSDLContent();Client client (Client) wsdl.get(client);ListMessagePartInfo partInfos (ListMessagePartInfo) wsdl.get(messagePartInfo);QName qName (QName) wsdl.get(qname);String clazzName partInfos.get(0).getTypeClass().getName(); try {Object requestParamObject Thread.currentThread().getContextClassLoader().loadClass(clazzName).newInstance();requestParamObject analysisParam(requestParamObject,map);log.info(请求参数{},JSON.toJSON(requestParamObject));result client.invoke(qName, requestParamObject);log.info(响应结果{},JSON.toJSONString(result,true));} catch (Exception e) {e.printStackTrace();}return result;} 解说方法 “ call() ” 接收一个 “ DTGMM1020GERP ” 对象作为入参并返回一个Object对象该方法主要业务就是将入参对象转换成map对象而后读取WSDL文件内容并传入给 “ analysisParam() ” 方法解析其中requestParamObject是读出的WSDL文件的节点map是待写入节点的值 private static Object analysisParam(Object req, Map map) throws InstantiationException, IllegalAccessException {Field[] fields req.getClass().getDeclaredFields();for (Field field : fields) {field.setAccessible(true);boolean b field.getGenericType() instanceof ParameterizedType;//如果是泛型并且是List类型if(b field.getType() List.class){List? cParam (List?) map.get(field.getName());log.info(子对象参数{},cParam);if(CollectionUtils.isEmpty(cParam)){continue;}Type type ((ParameterizedType)field.getGenericType()).getActualTypeArguments()[0];Class? aClass (Class?) type;Object cObj aClass.newInstance();log.info(子对象{},cObj);Field[] cFields cObj.getClass().getDeclaredFields();for (Field cField : cFields) {cField.setAccessible(true);List? target cParam.stream().map(o - {Map ccParam JSONObject.parseObject(JSON.toJSONString(o),Map.class);Object strParam ccParam.get(cField.getName());//如果子对象类型是基本类型或String类型那就直接赋值负责就递归if(cField.getType().isPrimitive() || cField.getType() String.class){try {if(null ! strParam){cField.set(cObj,strParam);}} catch (IllegalAccessException e) {throw new RuntimeException(e);}}else{try {Object obj cField.getType().newInstance();Map objMap JSONObject.parseObject(JSON.toJSONString(strParam),Map.class);if(!CollectionUtils.isEmpty(objMap)){analysisParam(obj,objMap);cField.set(cObj,obj);}} catch (InstantiationException e) {throw new RuntimeException(e);} catch (IllegalAccessException e) {throw new RuntimeException(e);}}return strParam;}).collect(Collectors.toList());/*Object targetResp target.get(0);cField.set(cObj,targetResp);*/}ListObject cObjs new ArrayList();cObjs.add(cObj);//给父对象赋值field.set(req,cObjs);}else if(field.getType().isPrimitive() || field.getType() String.class){//如果是基本类型或String类型field.set(req,map.get(field.getName()));}else{//按对象处理Object o field.getType().newInstance();Map childrenObjMap (Map) map.get(field.getName());if(!CollectionUtils.isEmpty(childrenObjMap)){writeFieldValue(o,childrenObjMap);field.set(req,o);}}}return req;} 步骤解析 一、使用反射获取待解析节点的字段 二、进行第一层 for 循环解析节点先判断了字段的类型是否为泛型且为List类型如果不是泛型且不是List类型再判断是否为基本类型或是String类型如果也不是那就当成普通对象处理 三、如果第一层 for 循环中的类型为泛型且为List类型时则进行第二层 for 循环处理第二层循环同样判断子对象字段值是否为基本类型或String类型如果是则直接赋值如果不是则说明是一个对象至于是个什么对象List基本类型StringPOJO无需理会直接进行递归解析即可 注意map的key需和待解析的节点字段名保持一致因为map.get()是通过field.getName()取值的 本文中引用到的其他方法请从上一篇文章中获取 使用CXF调用WSDL一 完成 文末 这是我mock加数据的方法入参对象可以使用该方法快速生成mock数据本文中的DTGMM1020GERP  public static T T getEntityData(T t) {Field[] field t.getClass().getDeclaredFields();for (Field f : field) {f.setAccessible(true);try {Random random new Random();int num random.nextInt(10);f.set(t,num);} catch (IllegalAccessException e) {throw new RuntimeException(e);}}return t;} 用法 只需要定义好对象的嵌套层级即可  ListDTGMM1020GERP list new ArrayList(); DTGMM1020GERP entity new DTGMM1020GERP(); entity getEntityData(entity); list.add(entity); 结束
http://www.hkea.cn/news/14262746/

相关文章:

  • 北京市建设工程造价管理处 网站百度站长平台网站改版工具
  • 茶叶网站模板免费下载济南seo优化公司助力排名
  • 网站内容栏由什么构成和女的做那个视频网站
  • 二手房交易网站排名做移动网站快速
  • 贵阳公司网页网站建设做网站安全的公司有哪些
  • 自己怎样学做网站重庆妇科医院在线咨询
  • 做服饰网站深圳建网站哪个济南兴田德润有活动吗
  • 如何把网站上传到网上网站建设在开封找谁做
  • 有没有可以发布需求的网站游戏代理平台哪个好
  • 开封市网站开发公司番禺响应式网站建设
  • 俄罗斯免费网站推广昆山网站建设价格
  • 织梦网站首页模板路径静态网站挂马
  • 北京网站代理备案做网站就用建站之星
  • 学做衣服的网站有哪些电子商务网站建设课程性质
  • 高端网站设计报价表如何获取免费域名
  • 长沙做网站找哪家好宁阳县住房和城乡建设局网站
  • 怎样在工商网站做遗失wordpress文章图片显示错误
  • idc网站模版title 网站建设
  • 发帖秒收录的网站app开发模板网站
  • 深圳龙华住房和建设局网站官网公司网站用什么语言开发
  • 免费自助建设网站unsplash素材网站
  • wp大学wordpress建站流程茶网站建设
  • 西安行业网站制作百度糯米网站怎么做
  • 深圳十大网站建设营销活动推广策划
  • 网站接入商html表格编辑器
  • 手机微信官方网站首页微信手机网站开发
  • 保定网站建设多少钱广东网站建设制作价格
  • 浙江网站建设技术公司大兴安岭网站建设
  • 网站开发工程师和软件工程iis 配置网站 404页面
  • 网站模板 帝国 phpcms婚庆网站模板