您的位置:首页 > Web前端 > JavaScript

比较两个json是否相等,忽略数组内元素顺序

2016-01-29 10:08 916 查看

借助com.google.gson包比较2个json是否相等,忽略json数组的顺序

    /**

     * 比较两个JsonElement是否相等,json数组顺序不影响

     * @param jsonElementX

     * @param jsonElementY

     * @return

     */

    public static boolean isJsonElementEquals(JsonElement jsonElementX, JsonElement jsonElementY){

        if(jsonElementX.isJsonObject() && jsonElementY.isJsonObject()){

            JsonObject jsonObjectX = (JsonObject)jsonElementX;

            JsonObject jsonObjectY = (JsonObject)jsonElementY;

            if(jsonObjectX.entrySet().size()!=jsonObjectY.entrySet().size())return false;

            for(Map.Entry<String,JsonElement>jsonElementEntryX:jsonObjectX.entrySet()) {

                boolean flag = false;

                for(Map.Entry<String,JsonElement>jsonElementEntryY:jsonObjectX.entrySet()) {

                    if (jsonElementEntryX.getKey().equals(jsonElementEntryY.getKey())) {

                        if(isJsonElementEquals(jsonElementEntryX.getValue(),jsonElementEntryY.getValue())){

                            flag = true;

                            break;

                        }

                    }

                }

                if (!flag) {

                    return false;

                }

            }

        }

        else if(jsonElementX.isJsonArray() && jsonElementY.isJsonArray()){

            JsonArray jsonArrayX = (JsonArray)jsonElementX;

            JsonArray jsonArrayY = (JsonArray)jsonElementY;

            if(jsonArrayX.size()!=jsonArrayY.size())return false;

            for(int i=0;i<jsonArrayX.size();i++){

                boolean flag = false;

                for(int j=0;j<jsonArrayY.size();j++){

                    if(isJsonElementEquals(jsonArrayX.get(i),jsonArrayY.get(j))){

                        flag = true;

                        break;

                    }

                }

                if (!flag) {

                    return false;

                }

            }

        }

        else if(jsonElementX.isJsonPrimitive() && jsonElementY.isJsonPrimitive()){

            if(((JsonPrimitive)jsonElementX).equals((JsonPrimitive)jsonElementY)){

                return true;

            }

        }else if(jsonElementX.isJsonNull() && jsonElementY.isJsonNull()){

            return true;

        }else{

            return false;

        }

        return true;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json