Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较2个JSONObject,不考虑值类型_Java_Jettison - Fatal编程技术网

Java 比较2个JSONObject,不考虑值类型

Java 比较2个JSONObject,不考虑值类型,java,jettison,Java,Jettison,我使用的是抛弃,用一些字符串生成JSONObject 我想获得一个JSONObject(j1)中所有键的列表,并将这些值与附加到另一个JSONObject(j2)中键的值进行比较 我试图创建一些我不关心值类型的东西,因为值是字符串和整数,谁知道还有什么 所以我做了一些类似的事情: 我想做一些像 Object o1 = j1.get("key") Object o2 = j2.get("key") 我可以将o1和o2转换成什么,以便比较它们的值?JSONObject?如果这些值是JSONArra

我使用的是抛弃,用一些字符串生成JSONObject

我想获得一个JSONObject(j1)中所有键的列表,并将这些值与附加到另一个JSONObject(j2)中键的值进行比较

我试图创建一些我不关心值类型的东西,因为值是字符串和整数,谁知道还有什么

所以我做了一些类似的事情:

我想做一些像

Object o1 = j1.get("key")
Object o2 = j2.get("key")
我可以将o1和o2转换成什么,以便比较它们的值?JSONObject?如果这些值是JSONArray呢

我尝试了JSONObject,得到了一个

"ClassCastException org.codehaus.jettison.json.JSONObject$Null cannot be cast to org.codehaus.jettison.json." 
当我有:

{"key1":null, .....

我有什么选择呢?

假设您正在比较相等的值(而不是,比如,关于某些顺序),您可以只使用
对象。相等

o1.equals(o2)
因为签名即使在扩展
对象的类中也是

public boolean equals(Object other)
因此,您可以将任何对象与任何其他对象进行比较,无需进行转换或显式转换(不过,
equals
的实现可能会在内部进行转换)

如果其中一个或两个可以为null,则可以使用
java.util.Objects.equals
来避免潜在的NPE:

Objects.equals(o1, o2)

杰出的这很有效。但是,如果一个JSONObject有{“key1”:“100”,另一个有{“key1”:100(一个有字符串值,一个有int值),我该怎么办?