<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();
}
}

Java用Gson按照键值key排序json所有节点的更多相关文章

  1. Java中Map根据键值(key)或者值(value)进行排序实现

    我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...

  2. PHP如何根据数组中的键值进行排序

    主要是使用PHP的排序函数,asort()和arsort(). 为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数 <?php $array = array( array(), ...

  3. Python列表中的字典按照该字典下的键值进行排序

    列表中的字典按照该字典下的键值进行排序 这算是排序中比较复杂的一种情况吧,多重嵌套,按照某种规则进行排序.如下面这个json(注:这里这是该列表中的一个项): [ { "stat" ...

  4. php方法----将数组按照键值进行排序

    将数组按照键值进行排序 array_multisort(array_column($arr,'first'),SORT_ASC,$arr);

  5. Java Map 键值对排序 按key排序和按Value排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

  6. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  7. C# 键值对排序

    static void Main(string[] args) { SortedList sl = new SortedList(); sl.Add("001", "Za ...

  8. 通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  9. 对象属性键值[key]属性问题

    1,obj[key]此时key代表是循环中的一个变量. var obj = {key:3,key1:1,key2:2,key3:3,toSting:4}; for (key in obj) { con ...

随机推荐

  1. Java中的枚举Enum

    public class TestEnum { /*最普通的枚举*/ public enum ColorSelect { red, green, yellow, blue; } /* 枚举也可以象一般 ...

  2. [sh]basename&dirname截取路径和文件名&case参数选项

    给出全路径,取出路径和文件名 basename使用示例 http://codingstandards.iteye.com/blog/840784 示例一 [root@web ~]# basename ...

  3. [py]环境变量的获取os.environ.get和设置

    $ export name='maotai' $ python >>> import os >>> os.environ.get('name', "&qu ...

  4. solr创建业务域以及指定中文分析器IK

    第一步:把中文分析器添加到工程中. 1.把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下 2.把扩展词典.配置文件放到solr工程的WEB-INF/classes目录下 ...

  5. R安装package报ERROR: a 'NAMESPACE' file is required

    R安装package报错: [root@Hadoop-NN-01 mysofts]# R CMD INSTALL trimcluster_0.1-1.tar.gz * installing to li ...

  6. python内置函数值 -- chr() ord()

    chr()接收一个数字, 找到这个数字对应的ascii里的元素(只能接受数字) a = chr(65) print(a) #结果: A ord()接收一个字符,返回这个字符对应的数字.(只能接受一个字 ...

  7. jquery dataTables例子

    https://datatables.net/examples/styling/bootstrap.html http://datatables.club/example/#styling http: ...

  8. 原生js---ajax---get方法传数据

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 寻路——AI

    小球找到目标位置, 必要时候进行跳跃 进行跳跃时,需要在cube上加上  Off Mesh Link  组件,并添加起跳位置和目标位置 在static位置选Navigation static 编写脚本 ...

  10. __init__.py的作用

    __init__.py 文件定义了包的属性和方法.其实它可以什么也不定义:可以只是一个空文件,但是必须存在.如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入 ...