|
import com.alibaba.fastjson.*; import java.util.*;
public> /**
* 对JSON进行排序
* @param jsonStr
* @return
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static List generateSortedTreeMap(String jsonStr){
//最终接受排序后的数据
List dataList = new ArrayList();
//对数据转换成有序的Map
List list = new ArrayList();
try {
list = JSON.parseArray(jsonStr, Map.class);
}catch(Exception e) {
System.out.println("+++++++++转换JSON数组失败,尝试转换成JSON对象:"+e.getMessage());
try {
Map obj = JSON.parseObject(jsonStr, Map.class);
list.add(obj);
}catch(Exception e1) {
System.out.println("+++++++++JSON对象转换失败:"+e.getMessage());
}
}
for(Map map:list) {
//获取JSON的键
Set keys = (Set)map.keySet();
List sortKeys = new ArrayList(keys);
//对键进行排序
Collections.sort(sortKeys);
//使用有序列表来存储
TreeMap tree = new TreeMap();
for(String key:sortKeys) {
tree.put(key, map.get(key));
}
dataList.add(tree);
}
return dataList;
}
/**
* 对比两个JSON
* @param json1
* @param json2
* @return
*/
public static boolean compareJSON(String json1,String json2) {
List data1List = generateSortedTreeMap(json1);
List data2List = generateSortedTreeMap(json2);
for(TreeMap map:data1List) {
if(!data2List.contains(map)) {
return false;
}
}
return true;
}
/*
public static void main(String[] args) {
//JSON字符串
//String json1 = "[{\"size\": 6,\"data\": \"hello linux\",\"data1\":{\"aa\":1,\"id\": {\"userid\": 3333,\"name\": \"hello world\"}}}},{\"data\": \"world\",\"size\": 7}]";
//String json2 = "[{\"data\": \"world\",\"size\": 7}, {\"data1\":{\"aa\":1,\"id\": {\"userid\": 3333,\"name\": \"hello world\"}},\"data\": \"hello linux\",\"size\": 6}]";
//String json1 = "[{\"name\": \"work\",\"passwd\": \"123456\",\"classname\": [ {\"name\": \"match\",\"score\":78},{\"name\": [ {\"name\": \"match\",\"score\":78} ]} ],\"teacher\":[ {\"name\": \"bob\",\"classname\": \"99\" }]}]";
//String json2 = "[{\"name\": \"work\",\"passwd\": \"123456\",\"classname\": [ {\"score\":78,\"name\": \"match\"},{\"name\": [ {\"name\": \"match\",\"score\":78} ]} ],\"teacher\":[ {\"name\": \"bob\",\"classname\": \"99\" }]}]";
//String json1="{\"size\": 6,\"data\": \"hello linux\"}";
//String json2="{\"data\": \"hello linux\",\"size\": 6}";
//String json1 = "{\"name\": \"testuser\",\"passwd\": \"123456\",\"classname\": [ {\"name\": \"match\",\"score\":78},{\"name\": [ {\"name\": \"match\",\"score\":78} ]} ],\"teacher\":[ {\"name\": \"bob\",\"classname\": \"99\" }]}";
//String json2 = "{\"passwd\": \"123456\",\"name\": \"testuser\",\"classname\": [ {\"name\": \"match\",\"score\":78},{\"name\": [ {\"name\": \"match\",\"score\":78} ]} ],\"teacher\":[ {\"name\": \"bob\",\"classname\": \"99\" }]}";
boolean result = compareJSON(json1, json2);
System.out.println(result);
}
*/
}
|
|