fastjson解析复杂一丢丢的json文件(json中的key不同)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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进⾏解析。
代码就不放上来了,写到这⾥忽然很感慨,如果当初好好学习英语现在说不定直接去官⽹看⽂档了,以上思路算是灵机⼀动加上⼀点点经验,半查资料半猜测出来的,供⼤家参考,因为之前去⽹上搜索这个问题的时候,发现不太好找,所以就写出来分享⼀下。