zoukankan      html  css  js  c++  java
  • 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();
            }
        }
  • 相关阅读:
    todo-list
    codeforces 794 (#414 DIV1+DIV2)
    2018bnu校赛总结
    codeforces 743D
    HDU-2196 Computer (树形DP)
    HDU- 1005 Number Sequence(矩阵快速幂)
    HDU- 4000 Fruit Ninja(树状数组)
    codeforces 505C
    codeforces 286B
    codeforces 3D
  • 原文地址:https://www.cnblogs.com/witpool/p/8444795.html
Copyright © 2011-2022 走看看