扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Java嵌入脚本怎么快速解析多层 json,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联建站2013年至今,是专业互联网技术服务公司,拥有项目成都网站设计、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元沙湾做网站,已为上家服务,为沙湾各地企业和个人服务,联系电话:18980820575关于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 for (int i = 0; i < twos.size(); i++) { two = twos.getJSONObject(i); Map ... 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的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联-成都网站建设公司行业资讯频道,感谢各位的阅读!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流