`

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

代码样例参考了自动化测试REST API工具Wisdom RESTClient
https://github.com/Wisdom-Projects/rest-client

分享到:
评论

相关推荐

    Java中json使用方法_动力节点Java学院整理

    在实际开发中,我们还可以使用其他流行的Java JSON库,如Jackson、Gson或Fastjson等,它们提供了更丰富的功能和更高的性能。例如,使用Gson库可以这样操作: ```java import com.google.gson.Gson; // ... ...

    json-lib 解析json串工具类

    4. **处理JSON节点** `JsonNode`是`json-lib`中的核心类,它代表了JSON的结构。你可以通过`JsonNode`的方法访问其属性(如`get(String key)`)或子节点,也可以修改值(如`put(String key, Object value)`)。 5. ...

    json jar包

    Gson是Google提供的库,它可以直接将Java对象转换成JSON字符串,反之亦然,使用非常直观。 在Java中处理JSON的基本流程可能如下: 1. 将Java对象转换为JSON字符串: - 使用Jackson,你可以创建一个`ObjectMapper`...

    java 把xml转化为json

    在这个例子中,我们首先使用`XmlMapper`读取XML字符串并将其转换为`ObjectNode`,这是Jackson中的一个抽象节点类型,代表了一个JSON对象。然后,我们用另一个`ObjectMapper`实例将这个`ObjectNode`转换为JSON字符串...

    读json文件自动生成jsonpath

    在Java中,处理JSON并生成JSONPath可以使用一些第三方库,如JsonPath、Jackson或Gson等。这里我们主要关注JsonPathLib,这可能是用户提供的一个自定义库或者是一个特定实现的类。`JsonPathLib.java`可能包含了读取...

    01-Android中xml转json.zip

    JSON则以键值对(key-value pairs)的形式存在,它由对象(object)、数组(array)、字符串(string)、数字(number)、布尔值(boolean)和null组成。 转换过程通常分为两个步骤:解析XML并创建相应的JSON对象,...

    java转换xml、list、map和json.pdf

    - 在实际开发中,应考虑使用现代的库,如Jackson或Gson,它们提供了更高效且功能丰富的JSON处理,而`jaxb`或`StaX`等库可以处理XML转换。 - 对于复杂的转换,可以使用对象映射框架,如Dozer或ModelMapper,它们...

    JAVA-memcached简单例子

    - 序列化:默认情况下,spymemcached使用Java序列化。但你可以自定义序列化策略,比如使用Gson或Jackson库进行JSON序列化,以提高性能和可读性。 - 批量操作:支持批量设置、获取和删除键值对,减少网络往返次数,...

    JSON:可以部署为json格式的树关系

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言(包括Java)的习惯,这使得它对程序员来说非常直观和易于读写。JSON是纯文本格式,可...

    02.06-Students-JSON

    标题 "02.06-Students-JSON" 暗示了这个压缩包可能包含一个关于使用Java处理JSON数据的教程或项目。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输。在这...

    Java 解析http请求处理结果

    本主题将深入探讨如何使用Java解析HTTP请求处理结果,包括发送GET和POST请求、处理响应、解析网页内容以及应对常见问题。 首先,Java中的HttpURLConnection是标准库中用于执行HTTP请求的核心类。我们可以使用它来...

    Java工具类

    了解和熟练使用这些工具类是Java开发人员的基本技能之一,对于提高软件的安全性、稳定性和可维护性都有着重要作用。在实际应用中,根据项目需求选择合适的加密解密算法、日期时间处理方式以及JSON和XML解析库,能...

    将json转换为位图弹簧

    1. **解析JSON数据**:使用Java的内置库`org.json`或第三方库如Jackson (`com.fasterxml.jackson.databind.ObjectMapper`) 或Gson (`com.google.gson.Gson`) 来解析JSON字符串为Java对象。例如,如果JSON是关于树形...

    spring + redis集群

    redisTemplate.opsForValue().set(key, new Gson().toJson(obj)); } ``` 这里的`opsForValue()`方法返回一个ValueOperations实例,用于处理字符串类型的数据。如果你需要存储的是自定义对象,可以通过序列化将其...

    物流跟踪查询快递鸟

    在本文中,我们将深入探讨如何使用Java实现物流跟踪查询,主要基于给定的"物流跟踪查询快递鸟"项目。这个项目提供了一个简单的示例(Demo),用于查询快递公司的物流信息,涉及的主要技术点包括Java编程、API接口...

    Android读写配置文件

    - 使用`FileInputStream`或`BufferedReader`读取文件内容,然后使用Gson或Jackson库反序列化JSON字符串为Java对象。 在项目"PageChange"中,可能包含了实现上述功能的示例代码,包括如何根据用户交互改变配置并...

    zTree插件下拉树使用入门教程

    在上述代码中,`JsonUtil.toJson()`是一个将Java对象转换为JSON字符串的方法,你可以使用诸如Jackson或Gson这样的库来实现。 最后,返回JSON数据时,确保设置正确的响应头以避免编码问题: ```java // 使用Spring...

    Android 百度地图之自定义公交路线源码.rar

    可以使用Gson或Jackson等库来方便地解析JSON。 8. **UI交互**: 为了提供良好的用户体验,你可能还需要实现点击路线节点查看详细信息、拖动路线节点重新规划等功能。这需要处理`MapView`的触摸事件,以及与自定义`...

Global site tag (gtag.js) - Google Analytics