Java不区分顺序怎么对比jsonArray是否相同

Java不区分顺序怎么对比jsonArray是否相同,只在乎两个jsonArray的内容是否完全一样.顺序无所谓。但是我使用fastjson的equals和container方法,顺序不一样都会返回false..

阅读 5.5k
1 个回答

一般情况,使用 fastjson 更多不是作为 json 的对比使用,而是作为序列化框架。

比如 A 传输调用 B :(A) Java -> json,(B) json -> Java, 对于A 或 B 来说,没有对比的需求。


另外,对于 fastjson 中的 JSONArray 为什么 对比为false ?

因为 底层 JSONArray 的 equals 方法其实是用了 ArrayList 的 equals。而 ArrayList 的 equals 判断逻辑必须是顺序和内容一致的。

// ArrayList.java
    public boolean equals(Object o) {
        if (o == this)
            return true;
        if (!(o instanceof List))
            return false;

        ListIterator<E> e1 = listIterator();
        ListIterator<?> e2 = ((List<?>) o).listIterator();
        while (e1.hasNext() && e2.hasNext()) {
            E o1 = e1.next();
            Object o2 = e2.next();
            if (!(o1==null ? o2==null : o1.equals(o2)))
                return false;
        }
        return !(e1.hasNext() || e2.hasNext());
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题