关于freemake解析xml双集合组成JSON

关于freemake解析xml双集合组成JSON

1.需要了解freemake语言,

http://freemarker.foofun.cn/

2.需要了解freemake内置的一下几种函数

2.1 list <#list></#list> 集合遍历 主要是遍历集合/数组 两种遍历方式:①是按照索引进行数组遍历;②根据属性进行遍历
2.2 counter id?counter 返回当前迭代(由循环变量名称识别)从1开始的索引。
2.3 index id?index 返回当前迭代(由循环变量名称识别)从0开始的索引。
2.4 id_index num[id_index] 获取当前索引对应的属性值
2.5 <#if><#esle></#if> 判断条件
2.6 has_next 辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。
##3.样例解析
样例:
在这里插入图片描述
组装的json模板:在这里插入图片描述{“list1”:<#if id ?? && (id.size()>0)>[<#list id as id>{“id”: i d , " n u m " : {id},"num": id,"num":{num[id_index]} <#if (id?counter==1)>,“list2”:[ <#list name[0…num[id?counter-1]?number-1] as mode>{“name”:“ n a m e [ m o d e i n d e x ] " , " a g e " : {name[mode_index]}","age": name[modeindex]","age":{age[mode_index]}}<#if mode?has_next>,</#if></#list>]<#else>,“list2”:[<#list name[num[id_index-1]?number…(num[id_index-1]?number+num[id_index]?number-1)] as mode >{“name”:” n a m e [ m o d e i n d e x ] " , " a g e " : {name[mode_index]}","age": name[modeindex]","age":{age[mode_index]}}<#if mode?has_next>,</#if></#list>]</#if>}<#if id?has_next>,</#if></#list>]<#else>null</#if>}

组装成的json:
{“list1”:[{“id”:1,“num”:4 ,“list2”:[ {“name”:“lkk01”,“age”:17},{“name”:“lkk02”,“age”:18},{“name”:“lkk03”,“age”:18},{“name”:“lkk04”,“age”:18}]},{“id”:2,“num”:2 ,“list2”:[{“name”:“lkk01”,“age”:17},{“name”:“lkk02”,“age”:18}]}]}
思路解析:
主要是解析第二次集合,首先,我们需要判断当前索引的位置,如果在索引的第一位,我们直接对集合设置变量范围<#list name[0…num[id?counter-1]?number-1] as mode> 其中num[id?counter-1]?number-1]计算出我们需要遍历的次数,从0开始遍历;在其他索引位置,我们需要获取上一次遍历的终止位置,以及我们需要计算出来终止遍历的位置,<#list name[num[id_index-1]?number…(num[id_index-1]?number+num[id_index]?number-1)] as mode >其中num[id_index-1]?number 获取当前索引的前一个索引值,用来确定起始遍历索引位置,(num[id_index-1]?number+num[id_index]?number-1)获取上一个索引值+当前需要往后延伸的数量-1(因为从0开始,导致索引位置多1位,需要减去),得出终止索引位置,确定新的list集合的起始和终止位置后,直接遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值