当前位置: 首页> 财经> 访谈 > java实现对多层json排序

java实现对多层json排序

时间:2025/7/9 13:10:34来源:https://blog.csdn.net/xixingzhe2/article/details/140352069 浏览次数:0次

1、概述

  • 目的:对多层json排序,按字母的升序排序。
  • 实现方案:利用java中的TreeMap排序特性进行排序。

2、工具类

package com.ybw.util;import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;import java.util.Map;
import java.util.TreeMap;/*** @author ybw* @version V1.0* @className JsonUtils* @date 2024/7/11**/
public class JsonUtils {/*** json排序*/public static String sortJson(Object obj) {//1、判断对象是否为空if (obj == null) {return null;}//2、将对象转换为JSON对象JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(obj));//3、排序Map<String, Object> sortedJsonObject = sortJsonObject(jsonObject);//4、返回排序后的JSON字符串return JSON.toJSONString(sortedJsonObject);}/*** 排序JsonObject** @param jsonObject* @methodName: sortJsonObject* @return: java.util.Map<java.lang.String, java.lang.Object>* @author: ybw* @date: 2024/7/11**/private static Map<String, Object> sortJsonObject(JSONObject jsonObject) {//1、判断对象是否为空if (jsonObject == null) {return null;}//2、创建一个TreeMap对象,用于存储排序后的键值对Map<String, Object> sortedJsonObject = new TreeMap<>();//3、遍历JSON对象,将键值对添加到TreeMap中,并排序for (Map.Entry<String, Object> entry : new TreeMap<>(jsonObject).entrySet()) {String key = entry.getKey();Object value = entry.getValue();//3.1 如果值是JSON对象,则递归调用,处理嵌套的JSON对象if (value instanceof JSONObject) {value = sortJsonObject((JSONObject) value);}//3.2 将键值对添加到TreeMap中sortedJsonObject.put(key, value);}return sortedJsonObject;}
}

3、测试

package com.ybw.util;import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;@Slf4j
class JsonUtilsTest {@Testvoid sortJson() {String jsonStr = "{\"name\":\"John\",\"age\":25,\"address\":{\"street\":\"Main St\",\"city\":\"New York\"}}";String sortedJson = JsonUtils.sortJson(jsonStr);log.info("json:{}", sortedJson);}
}

打印结果:

{"address": {"city": "New York","street": "Main St"},"age": 25,"name": "John"
}

关键字:java实现对多层json排序

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: