返回的数组顺序不一致的情况下判断是否通过
package com.thirdDay;
import org.junit.Test;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2017/8/15.
*/
public class JsonArrayTest {
@Test
public void sortArray(){
String result = "{\n" +
" \"code\": \"success\",\n" +
" \"success\": true,\n" +
" \"data\": [\n" +
" {\n" +
" \"age\": 20,\n" +
" \"name\": \"long20\",\n" +
" \"eamil\": \"long20@test.com\"\n" +
" },\n" +
" {\n" +
" \"age\": 28,\n" +
" \"name\": \"long28\",\n" +
" \"eamil\": \"long28@test.com\"\n" +
" },\n" +
" {\n" +
" \"age\": 100,\n" +
" \"name\": \"long100\",\n" +
" \"eamil\": \"long100@test.com\"\n" +
" },\n" +
" {\n" +
" \"age\": 150,\n" +
" \"name\": \"long150\",\n" +
" \"eamil\": \"long150@test.com\"\n" +
" }\n" +
" ],\n" +
" \"msg\": \"获取用户成功\"\n" +
"}\n";
String returnBody = "{\n" +
" \"code\": \"success\",\n" +
" \"success\": true,\n" +
" \"data\": [\n" +
" {\n" +
" \"age\": 28,\n" +
" \"name\": \"long28\",\n" +
" \"eamil\": \"long28@test.com\"\n" +
" },\n" +
" {\n" +
" \"age\": 20,\n" +
" \"name\": \"long20\",\n" +
" \"eamil\": \"long20@test.com\"\n" +
" },\n" +
" {\n" +
" \"age\": 150,\n" +
" \"name\": \"long150\",\n" +
" \"eamil\": \"long150@test.com\"\n" +
" },\n" +
" {\n" +
" \"age\": 100,\n" +
" \"name\": \"long100\",\n" +
" \"eamil\": \"long100@test.com\"\n" +
" }\n" +
" ],\n" +
" \"msg\": \"获取用户成功\"\n" +
"}\n";
if(!result.equalsIgnoreCase(returnBody)){
System.out.print("Fail");
}else{
System.out.print("Pass");
}
}
public boolean sortResult(String result, String returnBody) { //测试返回数据顺序不一致
boolean f = false;
if (!returnBody.startsWith("{") && !returnBody.endsWith("}")) {
return f;
}
try {
Map o1 = com.alibaba.fastjson.JSON.parseObject(result, Map.class);
Map o2 = com.alibaba.fastjson.JSON.parseObject(returnBody, Map.class);
int s = 0; //记录A 对象的JSON数量
int k = 0; //记录B 和A 相同的JSON数量
int listSize = 0;
for (Object o : o1.keySet()) {
Object valueObj = o1.get(o);
if (valueObj instanceof List) {
listSize += 1;
Object valueObj2 = o2.get(o);
s += ((List) valueObj).size();
if (null != valueObj2) {
if(((List) valueObj).size()!=((List) valueObj2).size()){
f=false;
break;
}
for (Object o3 : (List) valueObj) {
String o3str = com.alibaba.fastjson.JSON.toJSONString(o3);
for (Object o4 : (List) valueObj2) {
String o4str = com.alibaba.fastjson.JSON.toJSONString(o4);
if (o3str.equalsIgnoreCase(o4str)) {
k += 1;
}
}
}
}else {
f=false;
break;
}
}
}
//如果listSize>0 说明第二层对象是有LIST的 所以 进行属性的校验
if (listSize > 0) {
//如果总数的 JSON数量 和 对比后的JSON数量相等说明只是顺序变了 值是相等的
if (s == k) {
f = true;
}
}
} catch (Exception e) {
f = false;
e.printStackTrace();
}
return f;
}
}