fastjson解析复杂一丢丢的json文件(json中的key不同)
最近公司里的大佬让我写一个程序,作用概括来讲就是通过解析json文件得到数据,利用这些数据做资源转存以及将信息记录在数据库中。
当时那个项目里已经引入了fastjson的依赖,我就想顺势用它一手,但是实话说,已经很久没有手动使用这类技术去对json进行解析了,平时前后端交互都是使用@RequestBody直接搞定,当时冷静思考了一下,应该就是一个数据转为可操作的对象的过程,在网络上简单的检索了一下代码,结果当场就给我报错了。
这什么情况?自己捣鼓了一会还是没调好,按道理讲这应该没啥难度才对呀,突然,回过神才发现了不对劲的地方。
之前玩的json是这个样子的:
{ name:"xxx", id:"xxx", xxx:{ ... ... } }
这次给我的json文件是这个样子的:
{ "乱七八糟的名字": { }, "依旧乱七八糟的名字": { }, ... ... }
当时是从逻辑推理的角度来思考这个问题的,以上两个json我们称为j0和j1,你将j0交给fastjson,“兄弟,这个文件帮忙解析一下,这里面有name,id等等属性,我用类封装好了,你给我解析成这个类的对象。”
fastjson:“小事情,毫无压力啦”
而你将j1交给fastjson时,“兄弟,你看这个json能不能帮忙解析成我自定义类的对象?”
fastjson:“... ...”
那么这种情况下,我们该怎么使用fastjson进行解析呢?首先仔细观察一下你手头的json文件,我当时拿到的json文件第一层属性名字是不固定的,内层的名字是固定的,那么我可以对内层进行封装然后使用JSONObject json = JSON.parseObject(... ...);对整个json进行解析,然后调用keySet()方法取出所有千奇百怪的key,然后通过key取value,再对value进行解析。
代码就不放上来了,写到这里忽然很感慨,如果当初好好学习英语现在说不定直接去官网看文档了,以上思路算是灵机一动加上一点点经验,半查资料半猜测出来的,供大家参考,因为之前去网上搜索这个问题的时候,发现不太好找,所以就写出来分享一下。