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

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

1.需要了解freemake语言,

http://freemarker.foofun.cn/

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

2.1 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> 判断条件
2.6 has_next 辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。
##3.样例解析
样例:
关于freemake解析xml双集合组成JSON_第1张图片
组装的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>,]<#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 id?has_next>,]<#else>null}

组装成的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集合的起始和终止位置后,直接遍历

你可能感兴趣的:(java,servlet,json)