首页 > 编程语言 > 详细

集算器协助Java处理JSON

时间:2015-08-29 02:06:46      阅读:245      评论:0      收藏:0      [点我收藏+]

? ?json是半结构化数据,JAVA只能简单解析,很难进行深度计算。集算器支持集合运算、有序计算、动态脚本执行,可降低json的计算难度。集算器还提供了简单易用的JDBC接口,JAVA可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器用作Java计算类库的应用结构

??下面举例说明JAVA处理json时常见的难题,以及集算器对应的解法。

??json分组汇总

??order.json存储着订单记录,现在要按时间段汇总每个月每个客户贡献的销售额,部分源数据如下:


bubuko.com,布布扣

?

? ?集算器代码:


bubuko.com,布布扣
??

? ?将json文件读为二维表,进行性条件查询,再进行分组汇总,其中argBegin、argEnd是JAVA参数。结果如下:


bubuko.com,布布扣
?

? ?解析字段不定的json

? ?Data.json每个文档的字段数不定,字段顺序不定,如下:


bubuko.com,布布扣
?

? ?需要用JAVA程序将该文件输出到csv,期望的格式如下:


bubuko.com,布布扣
?

? ?集算器代码:


bubuko.com,布布扣
?

? ?将json读入内存,取出People字段,以逗号为分隔符写入文件,其中A2如下:


bubuko.com,布布扣
?

? ?将多层json输出为csv

? ?源json文件如下:


bubuko.com,布布扣
?

? ?期望在CSV中分两列摆放,如下:


bubuko.com,布布扣
?

? ?难点在于root的字段名要和下级合并,下级字段名和字段值要各对应结果中的一列。集算器代码:


bubuko.com,布布扣
?

? ?读入json文件,将数据按root数分为3组,如下(A2):


bubuko.com,布布扣
?

? ?之后将[root字段名,null]作为记录插入各组第1条,再合并各组记录,最后导出。Csv文件如下:


bubuko.com,布布扣
?

? 动态json入库

??s.json包含多层子文档,其LIST子文档和SERVICE子文档的字段数不定,要求用JAVA将s.json导入库表groups和service,规则是GROUPNAME的值和SERVICE的字段名对应数据库表groups,SERVICE的每个字段对应库表service,groups和service以groupsid相关联。

??源数据如下:


bubuko.com,布布扣
?

? ?集算器代码:


bubuko.com,布布扣
?

? ?保持结构读入json文件,分别循环SUCCESS的每个子文档(B4-D10)、List的每个字段(C5-D10)、Service的每个字段(D7-D10),将对应的记录追加到空二维表A2、A3,最后入库。代码中用到了访问二维表结构的几个函数,其中fno可取得字段数,fname按序号取得字段名,field可按序号取得字段值。

??追加记录后A2、A3分别如下:


bubuko.com,布布扣
?

集算器协助Java处理JSON

原文:http://datamachine.iteye.com/blog/2238575

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!