• Java用Gson按照键值key排序json所有节点


    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.0</version>
    </dependency>
        private static Comparator<String> getComparator()
        {
            Comparator<String> c = new Comparator<String>()
            {
                public int compare(String o1, String o2)
                {
                    return o1.compareTo(o2);
                }
            };
    
            return c;
        }
    
        public static void sort(JsonElement e)
        {
            if (e.isJsonNull())
            {
                return;
            }
    
            if (e.isJsonPrimitive())
            {
                return;
            }
    
            if (e.isJsonArray())
            {
                JsonArray a = e.getAsJsonArray();
                for (Iterator<JsonElement> it = a.iterator(); it.hasNext();)
                {
                    sort(it.next());
                }
                return;
            }
    
            if (e.isJsonObject())
            {
                Map<String, JsonElement> tm = new TreeMap<String, JsonElement>(getComparator());
                for (Entry<String, JsonElement> en : e.getAsJsonObject().entrySet())
                {
                    tm.put(en.getKey(), en.getValue());
                }
    
                for (Entry<String, JsonElement> en : tm.entrySet())
                {
                    e.getAsJsonObject().remove(en.getKey());
                    e.getAsJsonObject().add(en.getKey(), en.getValue());
                    sort(en.getValue());
                }
                return;
            }
        }
    
        public static void main(String[] args)
        {
            try
            {
                String json = FileUtils.readFileToString(new File("C://test//test.txt"), "UTF-8");
                Gson g = new GsonBuilder().setPrettyPrinting().create();
                JsonParser p = new JsonParser();
                JsonElement e = p.parse(json);
    
                sort(e);
    
                System.out.println(g.toJson(e));
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    神仙题1.0
    一些小技巧(持续更新。。)
    模板(持续更新中。。)
    「CTS2019 | CTSC2019」氪金手游(容斥+概率计数)
    Emacs配置
    AGC034E Complete Compres(dp)
    「清华集训 2017」榕树之心(换根dp)
    [NOI2018]冒泡排序 (卡特兰数)
    「清华集训 2017」小 Y 和二叉树 (贪心)
    「雅礼集训 2018 Day1」图 (dp套dp)
  • 原文地址:https://www.cnblogs.com/witpool/p/8444795.html
Copyright © 2020-2023  润新知