使用molicode进行json数据处理
背景描述
在日常工作中,我们常常需要将复杂的json数据进行提取,汇总计算等操作。又或者将json数据提取到Excel文件之中。下面我们通过3个例子介绍一下molicode如何完成这个操作。
示例1:json数据提取
场景:假设我们有一个json数据列表,我们只需要提取其中的 address.provinceId字段:
数据:(数据模型类型为:json)
[
{
"userName":"david",
"gender":"male",
"age":10,
"address":{
"provinceId":1,
"cityId":122,
"countyId":2332
}
},
{
"userName":"lucy",
"gender":"female",
"age":33,
"address":{
"provinceId":12,
"cityId":1224,
"countyId":24332
}
},
{
"userName":"jack",
"gender":"male",
"age":86,
"address":{
"provinceId":4,
"cityId":1252,
"countyId":23326
}
}
]
模板代码:
<%
println "用户名称\t省份ID"
data.each {
item ->
println item.userName + "\t" + item.address.provinceId;
}
%>
输出:
==============模板输出开始 =================
用户名称 省份ID
david 1
lucy 12
jack 4
==============模板输出结束 =================
示例2:json数据计算
场景:假设我们有一个json数据列表,我们需要计算年龄之和
数据:(数据模型类型为:json)
[
{
"userName":"david",
"gender":"male",
"age":10,
"address":{
"provinceId":1,
"cityId":122,
"countyId":2332
}
},
{
"userName":"lucy",
"gender":"female",
"age":33,
"address":{
"provinceId":12,
"cityId":1224,
"countyId":24332
}
},
{
"userName":"jack",
"gender":"male",
"age":86,
"address":{
"provinceId":4,
"cityId":1252,
"countyId":23326
}
}
]
模板代码:
<%
def sumAge = 0;
data.each {
item ->
sumAge += item.age;
}
println "sumAge=" + sumAge;
%>
输出:
==============模板输出开始 =================
sumAge=129
==============模板输出结束 =================
示例3:行列转生成SQL语句
我们常常需要将Excel里面的数据生成SQL,而待处理的数据一般是标准的行列结构。
数据:(数据模型类型为:单元文本处理)
1 张三 12 male
2 李梅 13 female
模板:
<%
data.each {
line ->
%>insert into user_info(id,user_name,age,gender,status,created,modified) values(${line.get(0)}, '${line.get(1)}', ${line.get(2)},'${line.get(3)}',1,now(),now());
<%
}
%>
生成结果:
[行列数据生成SQL语句]模板执行成功,输出到前台,应输出路径:/study_output/insert.sql
==============模板输出开始 =================
insert into user_info(id,user_name,age,gender,status,created,modified) values(1, '张三', 12,'male',1,now(),now() );
insert into user_info(id,user_name,age,gender,status,created,modified) values(2, '李梅', 13,'female',1,now(),now() );
==============模板输出结束 =================
总结
使用molicode可以做很多编程式的数据处理。当然,你也可以开发好模板,提供给你的朋友或者客户做数据处理之用。模板本身的可编程性是通过groovy脚本,或者velocity模板等实现的,语法都是通用公开的。目前主要还是建议使用groovy temple语法生成。
以上示例模板工程可以从git仓库中下载使用:
https://github.com/cn2oo8/molicode-template-study
molicode使用介绍请使用: https://github.com/cn2oo8/molicode