博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
object转为有序json
阅读量:6514 次
发布时间:2019-06-24

本文共 2357 字,大约阅读时间需要 7 分钟。

hot3.png

1、引入依赖

com.google.code.gson
gson
2.8.2

2、实现

import java.util.Comparator;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.TreeMap;import com.google.gson.Gson;import com.google.gson.JsonArray;import com.google.gson.JsonElement;/**  * 排序工具 * @ClassName: SortUtils  * @Description:  * @author weiyb  */public class SortUtils{	/**	 * 获取有序字符串	 * @param object	 * @return	 * @author weiyb	 */	public static String getSortParamsByObject(Object object) {		Gson g = new Gson();		JsonElement e = g.toJsonTree(object);		sort(e);		return g.toJson(e);	}	private static Comparator
getComparator() { Comparator
c = new Comparator
() { 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
it = a.iterator(); it.hasNext();) { sort(it.next()); } return; } if (e.isJsonObject()) { Map
tm = new TreeMap
(getComparator()); for (Entry
en : e.getAsJsonObject().entrySet()) { tm.put(en.getKey(), en.getValue()); } for (Entry
en : tm.entrySet()) { e.getAsJsonObject().remove(en.getKey()); e.getAsJsonObject().add(en.getKey(), en.getValue()); sort(en.getValue()); } return; } }}

3、测试

import org.junit.Test;import com.alibaba.fastjson.JSON;/** * @ClassName: SignTest * @Description: * @author weiyb * @date 2018年4月10日 下午8:24:30 */public class SortTest {		@Test	public void sortTest() {		User user=new User("1","张三",12);		String content = SortUtils.getSortParamsByObject(user);		System.out.println(JSON.toJSONString(content));	}}class User{	private String id;	private String name;	private int age;	public User(String id, String name, int age) {		super();		this.id = id;		this.name = name;		this.age = age;	}	public String getId() {		return id;	}	public void setId(String id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}}

 

转载于:https://my.oschina.net/u/182501/blog/1798981

你可能感兴趣的文章
python 保留两位小数
查看>>
Spring4-@Enable** 注解的实现原理
查看>>
Virtualbox中Linux添加新磁盘并创建分区
查看>>
CentOS6.5安装Elasticsearch1.7.5
查看>>
Windows平台注册mysql服务
查看>>
stl中Multimaps的基本用法
查看>>
Spring @Transactional ——事务回滚
查看>>
Ubuntu 修改环境变量
查看>>
(轉載) 英中繁簡編程術語對照 (C/C++)
查看>>
路由器DNS中继(小知识)
查看>>
微软图表控件使用拾遗
查看>>
POJ_3678 Katu Puzzle (2-SAT)
查看>>
如何成为Android高手
查看>>
Android中关于线程使用的几点注意事项
查看>>
基于net.tcp的WCF配置实例解析
查看>>
url重写:恶意url导致死循环
查看>>
作业自动提示功能设计思路
查看>>
php防止sql注入漏洞代码 && 几种常见攻击的正则表达式
查看>>
VGA线 1080P之伤 <中秋节篇>
查看>>
架设流媒体服务器[转]
查看>>