获取JSON中所有的KEY

摘要:
采用递归的方式,遍历JSON中所有的KEY。
采用递归的方式,遍历JSON中所有的KEY。
JSON格式如下:
{"username":"tom","age":18,"address":[{"province":"上海市"},{"city":"上海市"},{"disrtict":"静安区"}]}
处理后,得到的结果如下:
address|province|city|disrtict|username|age
packageai.advance.until;
importcom.alibaba.fastjson.JSONObject;
importcom.alibaba.fastjson.JSONArray;
public classfastJsonDiff {
    /**
     * 递归读取所有的key
     *
     * @paramjsonObject
     */
    public staticStringBuffer getAllKey(JSONObject jsonObject) {
        StringBuffer stringBuffer = newStringBuffer();
        Iterator<String> keys = jsonObject.keySet().iterator();//jsonObject.keys();
        while(keys.hasNext()) {
            String key =keys.next();
            stringBuffer.append(key.toString()).append("|");
            if (jsonObject.get(key) instanceofJSONObject) {
                JSONObject innerObject =(JSONObject) jsonObject.get(key);
                stringBuffer.append(getAllKey(innerObject));
            } else if (jsonObject.get(key) instanceofJSONArray) {
                JSONArray innerObject =(JSONArray) jsonObject.get(key);
                stringBuffer.append(getAllKey(innerObject));
            }
        }
        returnstringBuffer;
    }
    public staticStringBuffer getAllKey(JSONArray json1) {
        StringBuffer stringBuffer = newStringBuffer();
        if (json1 != null) {
            Iterator i1 =json1.iterator();
            while(i1.hasNext()) {
                Object key =i1.next();
                if (key instanceofJSONObject) {
                    JSONObject innerObject =(JSONObject) key;
                    stringBuffer.append(getAllKey(innerObject));
                } else if (key instanceofJSONArray) {
                    JSONArray innerObject =(JSONArray) key;
                    stringBuffer.append(getAllKey(innerObject));
                }else{
                }
            }
        }
        returnstringBuffer;
    }
    private final static String st1 = "{"username":"tom","age":18,"address":[{"province":"上海市"},{"city":"上海市"},{"disrtict":"静安区"}]}";
    private final static String st2 = "{username:"tom",age:18}";
    public static voidmain(String[] args) {
        System.out.println(st1);
        JSONObject jsonObject1 =JSONObject.parseObject(st1);
        StringBuffer stb =getAllKey(jsonObject1);
        System.err.println(stb);
    }
}

免责声明:文章转载自《获取JSON中所有的KEY》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇自己动手添加一个OpenWrt开机启动脚本mysql--统计每个用户的累计访问次数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Systemd简介与使用

Systemd在并行启动中采用了比Upstart更激进的方案。图2显示了systemd的并行启动模式。它允许所有配置的服务同时启动。事实上,大多数使用systemd的现代发行版都与此类似。系统通过配置这些单元来切换和管理服务。...

【JVM】元空间详解 Metaspace

nocs。JpgNoKlassisMetaspaceNoKlassinMetaspaces专用于存储其他与klass相关的内容,如方法、常量池等。它可以由多个不连续的存储器组成。在元空间GC之后,还将调整阈值。默认情况下,MaxMetaspaceSize基本上是无限的,因为大多数元空间都是在本地内存中分配的,但它仍然受到本地内存大小的限制。为了防止元空间的无...

DNSmasq架设简单DNS服务器

DNSmasq是一个轻量级且易于使用的DNS服务工具。当连接到内联网和互联网时,它可以用于IP地址的NAT转换,或者用作小型网络的DNS服务。默认值为5,最大值为100。...

Qt自定义Widget中设置滚动条

用代码自定义一个独立显示的Widget,要在里面画图,同时加上滚动条,滚动条:  printerYuLanPainter=newQPainter();test=newQScrollArea();printerYuLanWidget=newQWidget(test);printerYuLanWidget-˃setMaximumSize(720,1000);pr...

如何让FireFox/chrome新打开的标签页在后台打开,而不是立即跳转过去

Firefox:在地址栏中输入about:config以查找以下三项,所有这些项都设置为true browser。选项卡。加载后台浏览器。选项卡。加载DivertedInBackgroundbrowser。tabs LoadBookmarksInBackgroundchrome:Mac OS:按住命令键,用鼠标单击,您可以在后台打开一个新选项卡,进入Goog...

Java SPI

在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下javaspi机制的思想。  2.jdbc    jdbc4.0以前,开发人员还需要基于Class.forName的方式来装载驱动,jdbc4也基于spi的机制来发现驱动提供商了,可以通过META-INF/services/java.sql.Driver文件里指定实现类的方...