首页 > 其他分享 >遍历JsonObject 所有的key和value封装到两个list中

遍历JsonObject 所有的key和value封装到两个list中

时间:2023-04-08 17:32:11浏览次数:35  
标签:mdi JsonObject list value text path null children icon

可以使用main方法测试体验效果

public static void main(String[] args) {
    String originalStr = "{\"code\":200,\"msg\":\"success\",\"data\":{\"realName\":\"超级管理员\",\"defaultApp\":\"dbf684a81b06442fbeb61f13b1095a52\",\"systemManagementCenter\":\"[{\\\"children\\\":[{\\\"path\\\":\\\"/applyManage\\\",\\\"children\\\":[{\\\"path\\\":\\\"/sysAppinfo/insert\\\",\\\"text\\\":\\\"应用管理-添加\\\"}],\\\"text\\\":\\\"应用管理\\\"}],\\\"icon\\\":\\\"mdi-cog\\\",\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"应用管理\\\"},{\\\"children\\\":[{\\\"path\\\":\\\"/companyManage\\\",\\\"text\\\":\\\"公司管理\\\"},{\\\"path\\\":\\\"/organizationManage\\\",\\\"text\\\":\\\"机构管理\\\"},{\\\"path\\\":\\\"/userManage\\\",\\\"text\\\":\\\"用户管理\\\"}],\\\"icon\\\":\\\"mdi-account-cog\\\",\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"人员管理\\\"},{\\\"children\\\":[{\\\"path\\\":\\\"/menuManage\\\",\\\"text\\\":\\\"菜单管理\\\"},{\\\"path\\\":\\\"/roleManage\\\",\\\"text\\\":\\\"角色管理\\\"}],\\\"icon\\\":\\\"mdi-hexagon-slice-6\\\",\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"资源管理\\\"},{\\\"children\\\":[{\\\"path\\\":\\\"/userPrivileges\\\",\\\"text\\\":\\\"用户权限管理\\\"}],\\\"icon\\\":\\\"mdi-nut\\\",\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"权限管理\\\"}]\",\"appList\":[{\"id\":\"dbf684a81b06442fbeb61f13b1095a52\",\"appName\":\"营销反欺诈\",\"spid\":\"2c88360e67e34496b474412fee6b174d\",\"compName\":null,\"secret\":\"562ae2a4d1c547908783e68903e71215\",\"secretVersion\":null,\"verifyType\":null,\"appCerId\":null,\"voiceplatform\":null,\"voiceconfig\":null,\"smsconfig\":null,\"devicelimit\":0,\"states\":\"0\",\"foundUserId\":null,\"channelType\":null,\"tradechannelTypeStr\":null,\"createUser\":null,\"createTime\":\"2020-08-06 17:25:30\",\"updateUser\":null,\"updateTime\":\"2023-03-28 16:40:09\",\"appCerB64\":null,\"appTag\":\"mofd\",\"appType\":\"1\",\"key\":null,\"keyVersion\":null,\"createTimeStart\":null,\"createTimeEnd\":null}],\"captchaCenter\":\"[{\\\"path\\\":\\\"/application_manage\\\",\\\"icon\\\":\\\"mdi-table-settings\\\",\\\"text\\\":\\\"场景管理\\\"},{\\\"path\\\":\\\"/dataStatistics\\\",\\\"icon\\\":\\\"mdi-book-open-outline\\\",\\\"text\\\":\\\"数据统计\\\"},{\\\"children\\\":[{\\\"path\\\":\\\"/background_manage\\\",\\\"text\\\":\\\"底图管理\\\"},{\\\"path\\\":\\\"/font_lib_manage\\\",\\\"text\\\":\\\"字体库管理\\\"},{\\\"path\\\":\\\"/blacklist_manage\\\",\\\"text\\\":\\\"黑名单管理\\\"},{\\\"path\\\":\\\"/logo_list\\\",\\\"text\\\":\\\"Logo管理\\\"},{\\\"path\\\":\\\"/source_manage\\\",\\\"text\\\":\\\"验证码管理\\\"},{\\\"path\\\":\\\"/material_manage\\\",\\\"text\\\":\\\"素材管理\\\"}],\\\"icon\\\":\\\"mdi-fountain-pen\\\",\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"自定义\\\"},{\\\"children\\\":[{\\\"path\\\":\\\"/request_log\\\",\\\"text\\\":\\\"请求日志\\\"},{\\\"path\\\":\\\"/validation_log\\\",\\\"text\\\":\\\"验证日志\\\"}],\\\"icon\\\":\\\"mdi-animation-outline\\\",\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"日志\\\"},{\\\"children\\\":[{\\\"path\\\":\\\"/redis_monitor\\\",\\\"text\\\":\\\"Redis监控\\\"},{\\\"path\\\":\\\"/es_monitor\\\",\\\"text\\\":\\\"ES监控\\\"}],\\\"model\\\":\\\"false\\\",\\\"text\\\":\\\"系统监控\\\"},{\\\"path\\\":\\\"/channel_params_config\\\",\\\"text\\\":\\\"参数配置\\\"},{\\\"path\\\":\\\"/code_rules\\\",\\\"text\\\":\\\"验证码规则\\\"},{\\\"path\\\":\\\"/flow_config\\\",\\\"text\\\":\\\"流控配置\\\"},{\\\"path\\\":\\\"/sdk_version\\\",\\\"text\\\":\\\"SDK版本管理设计\\\"}]\",\"textContent\":\"[{\\\"id\\\":\\\"captchaCenter\\\",\\\"name\\\":\\\"智能验证码管理中心\\\",\\\"path\\\":\\\"/application_manage\\\",\\\"icon\\\":\\\"mdi-checkbox-intermediate\\\"},{\\\"id\\\":\\\"systemManagementCenter\\\",\\\"name\\\":\\\"系统管理中心\\\",\\\"path\\\":\\\"/applyManage\\\",\\\"icon\\\":\\\"mdi-cog-outline\\\"}]\",\"userId\":\"888306e1747e4afc838ba6c8c333b999\",\"token\":\"24b8d15633394ca18c720080eecc1ef1\"}}";

    JSONObject jsonObject = JSON.parseObject(originalStr);
    ArrayList<String> keyList = new ArrayList<>();
    ArrayList<String> valueList = new ArrayList<>();
    JsonUtils.keyValueJson(jsonObject,keyList,valueList);
    keyList.forEach(System.out::println);
    valueList.forEach(System.out::println);
}
public static void keyValueJson(JSONObject source, List<String> keyList, List<String> valueList) { 
        if (source!=null) {
            for (Map.Entry<String, Object> entry : source.entrySet()) {
                Object value = entry.getValue();
                if (value instanceof String || value instanceof Number) {
                    keyList.add(entry.getKey());
                    valueList.add(String.valueOf(entry.getValue()));
                    continue;
                }
                if (value instanceof JSONObject) {
                    JSONObject object = (JSONObject) value;
                    keyValueJson(object,keyList,valueList);
                    continue;
                }
                if (value instanceof JSONArray) {
                    JSONArray jsonArray = (JSONArray) value;
                    if (jsonArray.isEmpty()) {
                        continue;
                    } else {
                        for (int i = 0; i < jsonArray.size(); i++) {
                            JSONObject o1 = jsonArray.getJSONObject(i);
                            keyValueJson(o1,keyList,valueList);
                        }
                    }
                }
            }
        }
    }

标签:mdi,JsonObject,list,value,text,path,null,children,icon
From: https://blog.51cto.com/u_16033209/6177830

相关文章

  • 链表linklist
       LinkList.hLinkList.cLinkList.h#pragmaonce#include<stdbool.h>typedefintData;//定义节点结构typedefstructlinkNode{Datadata;structlinkNode*next;}linkNode;//创建链表linkNode*createList();//创建节点linkNode*create......
  • Redis 源码解析之通用双向链表(adlist)
    Redis源码解析之通用双向链表(adlist)概述Redis源码中广泛使用adlist(Agenericdoublylinkedlist),作为一种通用的双向链表,用于简单的数据集合操作。adlist提供了基本的增删改查能力,并支持用户自定义深拷贝、释放和匹配操作来维护数据集合中的泛化数据value。adlist的数......
  • 在android的fragment中使用子线程查询的数据如何实时更新在主界面的listview中
    主要是使用handler来对ui界面进行实时更新 public class YourFragment extends Fragment {    private ListView mListView;    private YourAdapter mAdapter = new YourAdapter(getContext(), new ArrayList<YourData>());//注意这一步的初始化如果闪......
  • 关于s3-bucket使用client.list_objects_v2列出所有的对象与指定目录下的所有对象
    使用AWSSDKforPython(Boto3)的S3的client下的list_objects_v2,可以列出一个s3bucket桶的所有对象,可以返回如下几个重要的字段的Key,LastModified,ETag,Size,StorageClass 实现的核心代码如下:其中在编辑中,有几个说明如下:1、Console页面上可以创建一个空的文件夹,......
  • 给定一个list和一个int数值,循环打印固定范围内list的元素
    比如有一个list,里面有“1,2,3,4,5,6,7,8”这八个元素,再给一个int数值,比如是3,那打印结果就是第一次:1,2,3第二次:4,5,6第三次:7,8,1第四次:2,3,4依次类推...publicstaticvoidmain(String[]args){intstrength=3;List<Integer>indexList=new......
  • freemarker处理list的内置函数
    freemarker处理list的内置函数first没有括号last没有括号seq_containsseq_index_ofsize没有括号reversesortsort_by如果list中放置的是对象的话,可以根据某个属性来排序chunk将list分块<#assignlistVar=[1,2,3,4,5,6,7,8,9,0,1,2]/><#listlistVa......
  • 带删除按钮的ListView
    不用说了,上图先:importjava.util.ArrayList;importcom.ql.adapter.DeletableAdapter;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;impo......
  • Lazy延时加载的ListView
    使用的是第三方开发包CWAC-AdapterWrapper.jarpackagecom.ql.app;/***Copyright(c)2008-2009CommonsWare,LLCLicensedundertheApacheLicense,Version2.0(the"License");youmaynotusethisfileexceptincompliancewiththeLi......
  • org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationExcept
    错误信息:com.xubo.rabbitmq.springbootrabbitmq.SpringbootRabbitmqApplication._________/\\/___'_____(_)______\\\\(()\___|'_|'_||'_\/_`|\\\\\\/___)||_)||||......
  • SwipeRefreshLayout和ListView的EmptyView共存冲突的问题
    SwipeRefreshLayout是android官方的下拉刷新控件;它内部有且只能有一个子控件;当一个ListView嵌入到它内部时,就不能为ListView带一个EmptyView了;于是很自然的想到将ListView和EmptyView纳入到一个父控件中;典型的像下面这样的布局:<android.support.v4.......