`
datamachine
  • 浏览: 163394 次
社区版块
存档分类
最新评论

集算器协助Java处理JSON

阅读更多

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

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

  json分组汇总

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


 

   集算器代码:



  

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



 

   解析字段不定的json

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



 

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



 

   集算器代码:



 

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



 

   将多层json输出为csv

   源json文件如下:



 

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



 

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



 

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



 

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



 

  动态json入库

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

  源数据如下:



 

   集算器代码:



 

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

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



 

  • 大小: 52.1 KB
  • 大小: 25.6 KB
  • 大小: 19.4 KB
  • 大小: 11.5 KB
  • 大小: 5.8 KB
  • 大小: 13.1 KB
  • 大小: 8.1 KB
  • 大小: 14.6 KB
  • 大小: 7.2 KB
  • 大小: 27.6 KB
  • 大小: 24.4 KB
  • 大小: 12 KB
  • 大小: 77.5 KB
  • 大小: 103.8 KB
  • 大小: 53.8 KB
1
0
分享到:
评论

相关推荐

    基于JAVA开发的大学新闻大图小程序

    总结来说,基于JAVA开发的大学新闻大图小程序是一个集Java编程、图像处理、数据库操作、网络通信和用户交互于一体的综合性项目,涵盖了大量的编程和软件工程实践知识。开发者需要具备扎实的Java基础,以及对现代软件...

    Java_API_AutoFrame.rar

    在Java_API_AutoFrame中,Maven负责引入HttpClient、TestNG等库,同时协助构建和打包测试项目,简化了项目的构建过程。 5. **接口自动化测试**: 接口自动化测试是指对应用程序的API(Application Programming ...

    梳理的一些java开发中用上的框架和开发工具,肯定会遗漏,欢迎补充

    Gson 是Google提供的一个用来在Java对象和JSON数据之间做转换的Java库。 - **Jackson**: 工具。Jackson 是一套非常快速且功能全面的JSON处理器。 - **fastjson**: 工具。Fastjson 是阿里巴巴的开源JSON解析库,性能...

    基于matrix-nio和nio-template构建的管理员和个人协助.zip

    Matrix-NIO和NIO-Template是两个用于网络编程的开源库,主要应用于Java环境中,用于提高服务器端的I/O性能和处理能力。Matrix-NIO是一个轻量级的、高性能的网络通信框架,它利用Java NIO(非阻塞I/O)技术来实现高效...

    基于ssm软件工程项目管理系统.zip

    该项目旨在为软件工程团队提供一个集需求管理、任务分配、代码版本控制、进度跟踪等功能于一体的综合性管理平台。 【描述】这个系统采用了现代化的Web开发技术,包括SpringBoot和微信小程序,以提高系统的可扩展性...

    qlemusic是一个关于音乐交流的社区论坛系统

    这个平台旨在提供一个集音乐分享、讨论、学习和交流于一体的线上环境,帮助音乐爱好者们更好地互动与提升自己的音乐素养。源码的开放使得用户可以深入理解系统的运作机制,同时也为计算机科学与技术专业学生的毕业...

    springsecurity jwt mybatis redis

    它基于过滤器链的概念,可以自定义拦截请求并处理安全逻辑。在配置SpringSecurity时,我们通常需要定义安全配置类,设置防火墙规则,以及定义用户认证和授权策略。 2. **JWT**:JWT是一种标准(RFC 7519),用于在...

    struts2最常用的一组包

    Struts2是一个强大的Java web应用程序框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性良好的企业级应用的工具集。"struts2最常用的一组包"这个压缩包包含了Struts2框架的...

    pcgtcg:Playing Cards Game 适用于 Android 的集换式卡牌游戏

    Java的IO和Android的Asset Manager可以协助完成这项工作。 7. **版本控制**:项目名为“pcgtcg-master”,表明开发者使用了Git进行版本控制,这有助于团队协作和代码维护。 8. **持续集成/持续部署(CI/CD)**:在...

    SeriesTV:ENI Android项目-SeriesTV应用程序

    Java提供了SQLiteOpenHelper来协助数据库的创建和升级,ContentProvider则用于在不同应用程序间共享数据。 6. **异步处理和线程管理**:由于Android应用需要避免在主线程上执行耗时操作,SeriesTV可能会使用...

    Projet-AppliCuli:应用烹饪厨具项目

    5. **Gson** 或 **Jackson**:JSON 解析库,用于处理服务器响应和本地数据存储。 6. **Room Persistence Library**:本地数据库存储,用于保存用户数据和厨具信息。 7. **JUnit** 和 **Mockito**:单元测试框架,...

Global site tag (gtag.js) - Google Analytics