ITPub博客

首页 > 应用开发 > IT综合 > Java 嵌入脚本快速解析多层 json

Java 嵌入脚本快速解析多层 json

IT综合 作者:rqgxy 时间:2020-06-02 16:25:16 0 删除 编辑

关于Json处理的开源包有很多,比如json-lib、jackson、Gson、Fastjson。Gson是谷歌做的,功能强大;Fastjson是阿里巴巴做的,性能较快。具体用哪个,你开心就好。

Json解析出来一般都是为了再次计算,常见的这些开源包大多都对Json的读取与解析提供了丰富的接口,但是接下来如何把多层Json数据经过筛选、进行深入计算并展开成二维数据,供给其它服务使用,仍然需要复杂硬编码,一般还需要借助关系数据库(创建临时表,解析入库,再使用SQL对其二次运算等),这些步骤搞起来,就需要开发人员去头疼了。

比如要处理这么个场景:订单信息的Json数据分为两层: 第一层是国家和地区,第二层是明细数据。现在想要查询出中国华北地区2013年的订单。

部分源数据如下:

[{"COUNTRY":"China","AREA":"Northeast China","ORDERS":[

{"ORDER_ID":10252,"CUSTOMER_ID":"SUPRD","EMPLOYEE_ID":4, …},

{"ORDER_ID":10318,"CUSTOMER_ID":"ISLAT","EMPLOYEE_ID":8, …},

…]},

{"COUNTRY":"China","AREA":"East China","ORDERS":[

{"ORDER_ID":10249,"CUSTOMER_ID":"TOMSP","EMPLOYEE_ID":6, …},

{"ORDER_ID":10251,"CUSTOMER_ID":"VICTE","EMPLOYEE_ID":3, …},

…]},

…]

期望Json结构化并过滤后的效果:

COUNTRY

AREA

ORDER_ID

CUSTOMER_ID

EMPLOYEE_ID

ORDER_DATE

China

North China

10402

ERNSH

8

2013-01-02

China

North China

10403

ERNSH

4

2013-01-03

China

North China

10404

MAGAA

2

2013-01-03

China

North China

10407

OTTIK

2

2013-01-07

Java解析的部分代码大概要写成这样:

...

JSONObject jsonObject = JSONObject.fromObject(orderstr);

JSONArray jsonArray = jsonObject.getJSONArray("COUNTRY");

...

JSONArray twos = jsonArray.getJSONArray("ORDERS");

JSONObject two = null;

List<Map<String, String>> list = new ArrayList<Map<String, String>>();

        for (int i = 0; i < twos.size(); i++) {

                 two = twos.getJSONObject(i);

                 Map<String, String> map = new HashMap<String, String>();

                 ...

                 list.add(map);

                 }

...

 

如果有了集算器,Json解析就会简单很多,它不仅把Json类库做了二次封装,实现同样的算法只需更少的代码,且精心设计了一套集合运算领域的函数库,以应对结构化后的各类运算,不再需要安装配置第三方数据库软件。比如上面从解析到过滤,只需4行就搞定了:


A

1

=json(file("orders.json").read())

2

=A1.select(COUNTRY=="China" && AREA.contain("North China"))

3

=A2.news(ORDERS;COUNTRY,AREA,${B1.ORDERS.fname().concat@c()})

4

=A3.select(year(ORDER_DATE)==2013)

其实还有很多情况用Java解析Json不太方便,甚至计算入库等需求,但用集算器SPL却很简单,感兴趣可以参考: JSON数据计算与入库

集算器还很容易嵌入到Java应用程序中, Java如何调用SPL脚本有使用和获得它的方法。

关于集算器安装使用、获得免费授权和相关技术资料,可以参见 如何使用集算器


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31555597/viewspace-2695739/,如需转载,请注明出处,否则将追究法律责任。

全部评论

注册时间:2018-09-20

  • 博文量
    353
  • 访问量
    164507