zoukankan      html  css  js  c++  java
  • 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进行解析。

    代码就不放上来了,写到这里忽然很感慨,如果当初好好学习英语现在说不定直接去官网看文档了,以上思路算是灵机一动加上一点点经验,半查资料半猜测出来的,供大家参考,因为之前去网上搜索这个问题的时候,发现不太好找,所以就写出来分享一下。

  • 相关阅读:
    BZOJ3473: 字符串
    BZOJ1088: [SCOI2005]扫雷Mine
    跪啃SAM
    BZOJ3932: [CQOI2015]任务查询系统
    BZOJ3545: [ONTAK2010]Peaks
    06.约束
    05.数据表的创建与简单操作
    04.数据库的创建
    安卓6.0后运行时权限封装
    OkGo使用缓存
  • 原文地址:https://www.cnblogs.com/wxdmw/p/14614717.html
Copyright © 2011-2022 走看看