Java 嵌入脚本快速解析多层 json
[{"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> list = new ArrayList>();
for (int i = 0; i < twos.size(); i++) {
two = twos.getJSONObject(i);
Map map = new HashMap();
...
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脚本有使用和获得它的方法。
关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。
Java 嵌入脚本快速解析多层 json相关教程