gpt4 book ai didi

java - JSONObject.similar(JSONObject) 这真正比较的是什么?

转载 作者:行者123 更新时间:2023-12-04 14:09:27 27 4
gpt4 key购买 nike

我正在寻找一种方法来比较两个 JSONObjects 除了使用

JSONObject.toString().equals(JSONObject.toString())

并遇到了这种类似的方法,但它的比较内容真的很模糊。

“确定两个 JSONObjects 是否相似。它们必须包含必须与 相似值 相关联的相同名称集。” Link

那是什么意思?有多相似?完全相同的?

我真的很努力地搜索,找不到任何可以清除它的东西。

最佳答案

这是sourceJSONObject.similar() :

/**
* Determine if two JSONObjects are similar.
* They must contain the same set of names which must be associated with
* similar values.
*
* @param other The other JSONObject
* @return true if they are equal
*/
public boolean similar(Object other) {
try {
if (!(other instanceof JSONObject)) {
return false;
}
Set<String> set = this.keySet();
if (!set.equals(((JSONObject)other).keySet())) {
return false;
}
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String name = iterator.next();
Object valueThis = this.get(name);
Object valueOther = ((JSONObject)other).get(name);
if (valueThis instanceof JSONObject) {
if (!((JSONObject)valueThis).similar(valueOther)) {
return false;
}
} else if (valueThis instanceof JSONArray) {
if (!((JSONArray)valueThis).similar(valueOther)) {
return false;
}
} else if (!valueThis.equals(valueOther)) {
return false;
}
}
return true;
} catch (Throwable exception) {
return false;
}
}

本质上 similar()递归比较 JSONObjects 的名称和值,如果它们相同则返回 true。
首先,它检查键集是否相等,然后移至值。
它递归地检查键集中的每个值,以查看它们在每个 JSONObject 中是否相等。如果不是,则返回 false。

关于java - JSONObject.similar(JSONObject) 这真正比较的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42635995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com