orion知识

 找回密码
 立即注册
搜索
查看: 1869|回复: 0

JavaScript 循环转换实例

[复制链接]

63

主题

75

帖子

1239

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1239
发表于 2020-1-11 20:16:02 | 显示全部楼层 |阅读模式
这是一个转换实例,我们先来说明一下任务要求:
      入参参数:
              canshu1:你好
              canshu2:我好
              canshu3:大家好
      入参后获取的出参:
        <message>
          <info>
           <result>1,成功</result>
           <infomx>
               <id>1</id>
           </infomx>
           <infomx>
               <id>2</id>
           </infomx>
            <infomx>
               <id>3</id>
           </infomx>
        </info>
              ……
     </message>
    难点要求:
Infomx为不确定个数,即id为多个,同时参数也刚好和id相同多,该实例是以数量3个为例,当然这个3我是不当做知道的。


上图是一个整的流程,在最后一步前都是为了得到一个正常的入参,不算在我们的处理中,功能上呢也说明下吧,第一步是设置参数(正常情况一般是从入参里获取),之后的JavaSprict是拼接一个入参,Character Encoding Translator则是将GBK转为UTF-8,最后一个JavaSprict是对出参的一个处理。
      代码如下:
              var count = next.getRepeatCount('/message/info/infomx');
              log.info(count);
              for(vari=1;i<=count;i++)
     {      next.setField('/message/info/infomx['+i+']/id',next.getProperty('canshu'+i));
      }

         由于id未知,所以我们先要确定有几个id的数据,那么代码里我们通过infomx这个节点来统计,id数(多数情况下一个节点的数据字段往往不止一个),count这个参数统计了节点数量,也是这里id的数量,获取数量就可以通过循环来添加内容了,这里选择了for循环,功能语句是通过对第i个infomx节点下的id元素setField,替换的内容是通过getProperty得来的参数。


最后附上服务调用获得的出参图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|orion知识 ( 浙ICP备20002629号 )

GMT+8, 2024-9-17 03:38 , Processed in 0.105319 second(s), 20 queries .

快速回复 返回顶部 返回列表