万能解析json

最近很多朋友问到我解析Json的问题,很多都是太复杂,解析起来很麻烦,但大部分都是使用工具进行解析,比如Gson之类的,但是这些有个问题就是要创建一个实体类bean,但是往往在很多开发过程中,后台返回数据是会随着迭代而改变的,这样创建的实体类bean可能也要改变,这里我就说说自己解析的一些心得。

首先我并没有用到第三方的解析工具,而是单纯的使用系统提供的JsonObject和JsonArray。然后获取到的数据字段存储我是用到的HashMap<String,Object>,这样就对于实体类很吻合了,key对应的实体类里面变量名字,value对应实体类里的变量值。如果有集合就可以在HashMap外面套上Arraylist之类的。

下面就开始提供代码块:

 

private HashMap<String, Object> stringToJsonObject(String response) {
        try {
            JSONObject jsa = new JSONObject(response);
            return JsonToHashMap(jsa);
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }

    private HashMap<String, Object> JsonToHashMap(JSONObject jsa) {
        HashMap<String, Object> hashmap = new HashMap<>();
        try {
            for (Iterator<String> keyStr = jsa.keys(); keyStr.hasNext(); ) {
                String key1 = keyStr.next().trim();
                if (jsa.get(key1) instanceof JSONObject) {
                    hashmap.put(key1, jsa.get(key1));
                }
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return hashmap;
    }


这样就可以将一个jsonObject转换成HashMap了,但是HashMap里面还是含有类似Json的,那就再重复上面操作就行了。

 

下面再来解析JsonObject

 

 public ArrayList<HashMap<String, Object>> dataListTmp = new ArrayList<HashMap<String, Object>>();
try {
            JSONObject jsonObject = new JSONObject(respanse);
            JSONArray jsonArray = new JSONArray(jsonObject.getString("result"));
            JSONObject jsonObject1 = new JSONObject(jsonArray.get(0).toString());
            JSONArray jsonArray1 = new JSONArray(jsonObject1.getString("Items"));
            for (int i = 0; i < jsonArray1.length(); i++) {
                JSONObject jsoo = jsonArray1.getJSONObject(i);
                HashMap<String, Object> map1 = new HashMap<String, Object>();
                Iterator it = jsoo.keys();
                while (it.hasNext()) {
                    String key = (String) it.next();
                    String value = jsoo.getString(key);
                    map1.put(key, value);
                }
                dataListTmp.add(map1);
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }


通过一个Iterator迭代一下就可以获取到key和value,具体还是需要看看具体需求,随机应变。先将json分析一下,一般公司后台提供json都有一定规律的,因此一些解析方式可以在项目中提取出来,完全可以复用,再也不用去新建bean实体类了,也抛开了第三方工具的使用。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
万能数据库查询分析器(中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》)拥有强大的功能、友好的操作界面、良好的操作性、跨越数据库平台。 DB 查询分析器的功能:   1、对数据库事务的支持。允许用户自己来管理用户会话中的事务,这在数据库维护时(如进行表数据修改、删除时)显得非常重要,只有用户自己确认操作无误后,再向系统提交或者回退事务。 2、提供了数据库对象浏览器,使用户更方便地了解数据库的数据字典。通过了解索引的创建情况,使得用户在设计SQL语句时,充分考虑到使用索引,可以帮助用户设计出效率更高的SQL语句。 3、提供了对所有数据库包括Oracle、Sybase、DB2、Informix、MySql、MS SQL SERVER、Access、FoxPro的SQL语句进行词法分析,对关键字、函数等显示以不同的颜色,使用户更方便地发现输入SQL语句的错误,同时也便于用户了解在当前的数据库系统中是否支持某一函数,是否存在某一个系统表或者系统存贮过程。 4、提供了中断正在执行的SQL语句的功能。 5、提供了快速生成某些常用SQL语句(如多种数据库系统的前N条记录)的功能。 6、提供了执行多条SQL语句的支持; 7、提供了对执行的一批SQL语句中每条SQL语句执行时间的记录,使用户更方便地了解SQL语句的执行效率。 8、更方地对各条SQL语句执行结果进行导出。 9、全面支持SQL语句中的三个SQL部分(DDL、DML、DCL)。 大家可以进行免费试用,试用版本的有效期为31天,,安装时的序列号111-111-111-111-111、授权码为111-111。 万能数据库查询分析器(DB查询分析器) v7.023 更新内容 1、提供单次、每周、每月的SQL执行计划; 2、执行多条SQL语句可以保存到多个文件; 3、执行结果保存为文件时允许自定义字段间的分隔符、行结束符; 4、便捷的事务管理功能。 万能数据库查询分析器(DB查询分析器) 截图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值